【问题标题】:compiling native GCC for arm using cross-compiler使用交叉编译器为 arm 编译本机 GCC
【发布时间】:2018-11-17 07:48:41
【问题描述】:

我正在寻找为 ARM 系统创建 GCC 的本机版本,但遇到了一些麻烦。构建机器是 i686-linux。我看到的每个教程都告诉我如何设置实际的交叉编译套件(我已经使用 crosstools-ng 完成了)。但是,我没有看到与编译本机 ARM GCC 相关的任何内容。我使用的配置字符串如下,我只使用标题设置了 sysroot。我还交叉编译并安装了 GMP 和 MPFR。

../../gcc-4.3.5/configure \
    --host=arm-unknown-linux-gnueabi \
    --build=i686-build_pc-linux-gnu \
    --target=arm-unknown-linux-gnueabi \
    --prefix=/home/vm/gcc-native/sysroot \
    --with-sysroot=/home/vm/gcc-native/sysroot \
    --enable-shared --enable-threads --disable-libmudflap --disable-libssp \
    --disable-libgomp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld \
    --enable-languages=c,c++ --enable-symvers=gnu --enable-__cxa_atexit \
    --disable-nls --disable-multilib \
    --with-gmp=/home/vm/gcc-native/sysroot/ \
    --with-mpfr=/home/vm/gcc-native/sysroot/

GCC 会构建一段时间,但随后会因此而死:

检查目标文件的后缀...配置:错误:无法计算目标文件的后缀:无法编译。

我不确定这将如何在我的系统上运行,因为我在 i686-linux 上构建并且目标/主机都是 arm-linux。我现在的想法是找到一个 ltib 发行版并查看 GCC 的规范文件并尝试遵循所有步骤。由于与 std 命名空间冲突,ltib 为我的板提供的 GCC 无法在我的系统上编译。

任何信息/链接将不胜感激!

【问题讨论】:

  • 也许您可以查看configure 脚本内部,找到计算目标文件后缀的部分并找出它失败的原因。或者也许只是修复它以始终返回.o
  • 实际上,构建系统可能会尝试运行交叉构建(arm)的可执行文件,但失败了。修复这个特定的测试没有什么意义。它将无法运行下一个。有必要查看构建日志以找出问题所在。

标签: linux gcc arm native cross-compiling


【解决方案1】:

查看 config.log 文件(可能不是顶级文件),看看当测试失败时它试图做什么。只需 grep 查找 cannot compute suffix 消息,您应该会找到正确的位(它不会在文件末尾)。

请注意,如果您想构建一个跨原生工具链,您将需要在您的路径上的某处工作arm-unknown-linux-gnueabi-gcc。 IE。你需要一个交叉编译器来构建跨原生编译器。

【讨论】:

    猜你喜欢
    • 2016-02-05
    • 2015-12-20
    • 2014-11-14
    • 2014-10-06
    • 2016-12-26
    • 2013-10-10
    • 2020-02-05
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多