Как добавить каталоги в путь поиска ld для кросс-компиляции в ARM? - PullRequest
1 голос
/ 12 февраля 2012

Я пытаюсь настроить util-linux для кросс-компиляции, используя arm-none-linux-gnueabi из CodeSourcery. Моя единственная проблема до сих пор в том, что она не может найти мою библиотеку ncurses, которую я скомпилировал.

Как добавить каталог в путь поиска ld? Я пытался добавить к своим переменным LIBRARY_PATH и LD_LIBRARY_PATH, но ни один из них ничего не делает. Я знаю, что могу добавить флаг -L к gcc, и он добавит путь компоновщика, но есть ли способ сделать это глобально, чтобы я мог сделать это один раз, и мне больше не придется об этом беспокоиться?

Вот вывод arm-none-linux-gnueabi-gcc -print-search-dirs | grep libraries | sed 's/:/\n/g':

libraries
 =/tools/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/
/tools/bin/../lib/gcc/
/tools/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/lib/arm-none-linux-gnueabi/4.6.1/
/tools/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/lib/
/tools/bin/../arm-none-linux-gnueabi/libc/lib/arm-none-linux-gnueabi/4.6.1/
/tools/bin/../arm-none-linux-gnueabi/libc/lib/
/tools/bin/../arm-none-linux-gnueabi/libc/usr/lib/arm-none-linux-gnueabi/4.6.1/
/tools/bin/../arm-none-linux-gnueabi/libc/usr/lib/

Я хотел бы добавить /arm/usr/lib и /arm/usr/local/lib к моему пути поиска ld.

Если вам нужны выходные данные любых других команд, просто спросите!

РЕДАКТИРОВАТЬ: Я только что узнал о переменной среды CFLAGS - все ли скрипты / make-файлы конфигурирования соблюдают ее?

Спасибо!

1 Ответ

2 голосов
/ 14 февраля 2012

Если скомпилированная библиотека ncurses будет связана с двоичным файлом ARM, который вы кросс-компилируете, вы не можете использовать LD_LIBRARY_PATH!LD_LIBRARY_PATH используется только текущей средой выполнения и никоим образом не используется компилятором или компоновщиком при сборке приложения.

Использование CFLAGS зависит от создателя Makefile.CFLAGS не используются автоматически, даже если они определены как переменная среды.Только такие инструменты, как инструменты autoconf, могут извлекать их из окружающей среды и использовать их автоматически.В Makefiles найти что-то вроде:

$(CC) $(CFLAGS) ....

если этот фрагмент существует, то Makefile использует переменную CFLAGS.LDFLAGS - более подходящая переменная среды для использования во время компоновки.

...