使用交叉编译器编译原生的GCC以适用于ARM平台

5

我希望创建一个针对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的规范文件,尝试按照所有步骤进行操作。ltib为我的板子提供的GCC由于与std命名空间的冲突而在我的系统上无法编译。
如有任何信息/链接,请告知!

也许你可以查看configure脚本的内部,找到计算目标文件后缀的部分,并弄清楚为什么它失败了。或者只需将其修复为始终返回.o - n. m.
实际上,构建系统可能会尝试运行一个交叉编译的(arm)可执行文件,并失败了。修复这个特定的测试意义不大,因为下一个测试也会失败。需要查看构建日志以找出问题所在。 - n. m.
1个回答

3

请查看config.log文件(也许不是顶层文件),看看测试失败时它试图做什么。只需搜索cannot compute suffix消息,您就可以找到正确的部分(它不会在文件末尾)。

请注意,如果您想构建交叉本地工具链,则需要在路径中的某个位置拥有可用的arm-unknown-linux-gnueabi-gcc。也就是说,您需要一个交叉编译器来构建交叉本地编译器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接