如何将工具链交叉编译到ARMv5平台?

时间:2015-03-22 03:53:35

标签: c++ linux gcc arm cross-compiling

我不打算设置一个工具链来在x86主机上交叉编译到ARMv5目标(我已经有了它并且它正在工作),但是一个工具链可以在ARMv5平台上编译成ARMv5目标(本身)。我知道我总是可以交叉编译所有我需要的应用程序,但是我希望在系统上运行一个编译器,这样我就可以很好地了解如何对Rasberry Pi和Beaglebone等其他板子做同样的事情,因为它看起来很酷。

我已经研究过crosstool-ng,但据我所知,它似乎仅适用于x86主机到各种目标,而不是各种目标的各种主机。

这是否有推荐的工作流程?我正在考虑看看处理像Beaglebone这样的电路板发行版的人是怎么做的,但我似乎无法找到任何相关的信息,他们是否使用了一些专有的解决方案?

有问题的工具链是来自Sourcery CodeBench Lite的this one,其中包含源代码,但似乎只是通过已编译的交叉编译器运行它不起作用。

我发现了一些相关的问题,但似乎没有一个问题让它一路走下去,那里有没有这方面的指南?对于你们所有人来说,就像我一样在谷歌上搜索,如果你的结果中出现了这些,这里有一些相关的问题:

Cross compile native gcc for arm with crosstool-ng, have toolchain, which architecture deps, and which build, host, and target?

how to change the host type for a 'Canadian cross' compilation of GCC with crosstool-NG

Cross compiling gcc

Compile GCC with Code Sourcery

compiling native GCC for arm using cross-compiler

1 个答案:

答案 0 :(得分:0)

在设计了大量图书馆和工具链之后,我成功地完成了这项工作。

您需要首先设置交叉编译器来为ARM926J CPU编译ARMv5可执行文件。为什么选择ARMv5和ARM926J?因为我正在使用SAM9N12,它使用ARM926J代码(J代表运行本机JVM的Jazelle),该核心是ARMv5架构。

您可以从ARM launchpad based GCC repo获取交叉编译器,也可以使用Crosstools-NG自行制作交叉编译器。建议使用Crosstools-NG,因为你可以使用自己的标准C库(与uClib或musl相比,GNU的版本是怪异的)。

最后,您需要使用交叉编译器来创建本机ARM编译器。通常情况下,您可以使用Crosstools-NG执行此操作,但cross-native选项未实现,因此您必须执行所谓的Canadian-Build,它可以正常工作但执行一些冗余步骤。< / p>

由于此问题仅指明了要使用的常规工作流程的概念,因此我将保留原样并引用您的other question,具体询问如何使用Canadian-Build与Crosstools-NG一起考虑{ {1}}尚未实施。