2011-10-05 173 views
4

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

../../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将建立一段时间,但随后死亡与此:

checking for suffix of object files... configure: error: cannot compute suffix of object files: cannot compile.

我不知道如何做到这一点连我的系统上运行,因为我在i686-linux和建设目标/主机都是arm-linux。我现在的想法是找到一个ltib发行版并查看GCC的规格文件并尝试遵循所有步骤。由于与std名称空间冲突,我的系统板附带的GCC无法在我的系统上编译。

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

+0

也许你可以在'configure'脚本里面找到计算目标文件后缀的部分并找出它失败的原因。或者,也许只是修复它总是返回'.o'。 –

+0

实际上,构建系统可能会尝试运行跨构建(arm)可执行文件,并失败。修复这个特殊的测试是没有意义的。它将无法运行下一个。有必要查看构建日志以找出发生了什么问题。 –

回答

2

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

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