如何将目录添加到ld搜索路径以交叉编译到ARM?

时间:2012-02-12 19:05:43

标签: path linker cross-compiling ld codesourcery

我正在尝试使用来自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都尊重它?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您编译的ncurses库将链接到您正在交叉编译的ARM二进制文件,则不能使用LD_LIBRARY_PATH! LD_LIBRARY_PATH仅由当前运行时使用,在构建应用程序时绝不会被编译器或链接器使用。

CFLAGS的使用取决于Makefile的创建者。即使将CFLAGS定义为环境变量,也不会自动使用CFLAGS。只有像autoconf工具这样的工具才能从环境中获取它们并自动使用它们。在Makefile中找到类似的内容:

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


如果此片段存在,则Makefile使用CFLAGS变量。 LDFLAGS是用于链接时选项的更合适的环境变量。

相关问题