【问题标题】:How to add directories to ld search path for a cross-compilation to ARM?如何将目录添加到 ld 搜索路径以交叉编译到 ARM?
【发布时间】:2012-02-12 19:05:43
【问题描述】:

我正在尝试将 util-linux 配置为使用 CodeSourcery 中的 arm-none-linux-gnueabi 进行交叉编译。到目前为止,我唯一的问题是它找不到我编译的 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 都尊重它吗?

谢谢!

【问题讨论】:

    标签: path linker cross-compiling ld codesourcery


    【解决方案1】:

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

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

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


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

    【讨论】:

    • 好的,如此精心设计的 Makefiles 应该尊重它,但我可能需要做一些修补才能让其他人工作。谢谢你的回答!
    猜你喜欢
    • 2022-01-14
    • 2021-07-10
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多