交叉编译 gcc

Posted

技术标签:

【中文标题】交叉编译 gcc【英文标题】:Cross-Compiling gcc 【发布时间】:2010-08-16 02:38:58 【问题描述】:

我正在按照说明 here 进行交叉编译 GCC。我在一个mac上。当我从 gcc 源文件夹运行此命令时:./configure --target=i586-elf --prefix=/usr/local/cross --disable-nls --without-headers --enable-languages=c,ada,c++,fortran,java,objc,obj-c++,treelang 我收到此错误:configure: error: GMP 4.1 and MPFR 2.2.1 or newer versions required by fortran。当我将命令更改为此(我无法编译 GMP)时:./configure --target=i586-elf --prefix=/usr/local/cross --disable-nls --without-headers --enable-languages=c,ada,c++,java,objc,obj-c++,treelang 我收到此错误:

The following requested languages could not be built: ada
Recognised languages are: c,ada,c++,fortran,java,objc,obj-c++,treelang

这对我来说没有意义,因为它说 ada 已被识别。 enable-languages 设置的所有其他配置(以及未更改设置并使用默认设置时)都会给我这个错误:

/usr/local/cross/i586-elf/bin/ranlib ./libgcov.a
_error_not_here_yet - havent even thought about it - it may even work
make[1]: _error_not_here_yet: Command not found
make[1]: *** [treelang.all.cross] Error 127
make: *** [all-gcc] Error 2

如何交叉编译 GCC?

【问题讨论】:

尝试启用您真正想要的语言,例如--enable-languages=c,c++ 是的。根据您尝试编译的版本,Ada 可能已被弃用,他们只是没有更新帮助消息。 +1 表示“_error_not_here_yet - 甚至没有想过 - 它甚至可以工作”错误消息 :-) 不适用于 go,“无法构建以下请求的语言:go” 【参考方案1】:

你是从 gcc 源代码树运行configure 吗?如果是这样:不要那样做。按照您链接到的页面中的说明(逐字)。

仔细观察,您会发现他们正在从 gcc 源代码树外部运行configure 命令。

如果您的平台受其支持,crosstool script(也从您的说明页面底部链接)非常有帮助。

编辑:正如potatoswatter 在评论中指出的那样,此时您的安装可能已经被水洗了。移除整棵树并从头开始。 (听上去时间太长了,想走捷径,但现在从头开始的话,最终会更快。)

【讨论】:

此外,在那里运行configure 可能会损坏安装。至少,在我犯了那个错误之后,我无法构建它,直到我重新下载并重新下载它。 crosstool-ng 是对 crosstool ymorin.is-a-geek.org/projects/crosstool的积极维护重写 @Hasturkun - 感谢您的链接,下次需要时我必须检查一下。 crosstool-ng 支持哪些 GCC 语言?

以上是关于交叉编译 gcc的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu配置交叉编译环境(配置交叉编译工具链)配置arm-linux-gcc交叉编译工具链(添加交叉编译工具链(toolchain)到环境变量)

Ubuntu配置交叉编译环境(配置交叉编译工具链)配置arm-linux-gcc交叉编译工具链(添加交叉编译工具链(toolchain)到环境变量)

arm-linux-gcc交叉编译是静态编译还是动态的

如何构建GCC交叉编译器

如何构建GCC交叉编译器

交叉编译 gcc