【发布时间】: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