我正在尝试使用来自CodeSourcery的arm-none-linux-gnueabi来配置util-linux以进行交叉编译。到目前为止我唯一的问题是它无法找到我编译的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环境变量 - 是否所有配置脚本/ makefile都尊重它?
谢谢!
答案 0 :(得分:2)
如果您编译的ncurses库将链接到您正在交叉编译的ARM二进制文件,则不能使用LD_LIBRARY_PATH! LD_LIBRARY_PATH仅由当前运行时使用,在构建应用程序时绝不会被编译器或链接器使用。
CFLAGS的使用取决于Makefile的创建者。即使将CFLAGS定义为环境变量,也不会自动使用CFLAGS。只有像autoconf工具这样的工具才能从环境中获取它们并自动使用它们。在Makefile中找到类似的内容:
$(CC) $(CFLAGS) ....
如果此片段存在,则Makefile使用CFLAGS变量。 LDFLAGS是用于链接时选项的更合适的环境变量。