【问题标题】:how to trace ./configure failure on cross compile如何在交叉编译时跟踪 ./configure 失败
【发布时间】:2020-01-05 03:52:24
【问题描述】:

我不是 autotool/autoconf 专家

作为标题,我正在为 ARM 平台进行交叉编译。然后尝试

 CC=arm-openwrt-linux-gcc LD=arm-openwrt-linux-ld AR=arm-openwrt-linux-ar ./configure --host=arm --build=i386 --target=arm 

然后我收到以下消息,它似乎不支持 共享库

检查 arm-openwrt-linux-gcc 链接器 (arm-openwrt-linux-ld) 是否支持共享库...是 ... 检查 libtool 是否支持共享库...否 检查是否构建共享库...否 检查是否构建静态库...是 检查如何运行 C++ 预处理器... g++ -E 检查 g++ 使用的 ld... arm-openwrt-linux-ld 检查链接器(arm-openwrt-linux-ld)是否为 GNU ld... 是 检查 g++ 链接器(arm-openwrt-linux-ld)是否支持共享库...否 检查 g++ 选项以生成 PIC... -fPIC -DPIC ... 检查 g++ 是否支持 -c -o file.o...(缓存)是 检查 g++ 链接器(arm-openwrt-linux-ld)是否支持共享库...否

我知道编译是支持共享库。我想修复 configure

配置中跟踪/调试此类问题的最佳方法是什么?

【问题讨论】:

    标签: autotools autoconf


    【解决方案1】:

    在配置时跟踪/调试此类问题的最佳方法是什么?

    如果基于 Autoconf 的configure 脚本的输出没有为您提供足够的信息来识别问题,那么您可以从configure 写入的日志文件configure.log 中获取更多信息。它提供了大量关于 configure 所做工作的详细信息,包括它为每个测试运行的特定命令、输入(如果相关)及其输出/stderr/返回码。

    查看configure 脚本本身有时也会有所帮助,但您应该准备好使用编辑器的搜索功能来查找相关代码,因为该脚本通常有数千行长。

    但在你开始深入研究之前,试试specifying the host system via an appropriate full triplet。如果您这样做,那么您可能不需要通过环境变量指定特定工具,并且您可能会发现它完全解决了问题。您也可以指定build 三元组,但这通常不是必需的。 target 三元组完全是un必要的,除非您正在构建编译器,因为target (仅)描述了此类编译器为其生成输出的系统类型。

    例如,看起来这可能适合您的情况:

    ./configure --host=arm-openwrt-linux
    

    【讨论】:

      猜你喜欢
      • 2014-07-16
      • 2011-07-05
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多