我不想设置一个工具链在x86主机上交叉编译到ARMv5目标(我已经有了它,它正在工作),而是在ARMv5平台上编译到ARMv5目标(本身)的工具链。 我知道我总是可以交叉编译我所需要的所有应用程序,但是我希望在系统上运行编译器,所以我将会很好地了解如何为Rasberry Pi和Beaglebone等其他板子做同样的工作。只是看起来很酷。
我已经看到了crosstool-ng,但据我所知,它似乎只适用于x86主机的各种目标,而不是针对各种目标的各种主机。
有没有推荐的工作stream程? 我正在考虑如何处理像Beaglebone这样的董事会发行人,但我似乎无法find任何信息,他们是否使用了一些专有的解决scheme?
有问题的工具链是Sourcery CodeBench Lite中包含的源代码,但似乎只是通过已经编译的交叉编译器运行它不起作用。
我发现了一些相关的问题,但是似乎没有一个能够一路走下去,有没有一个向导呢? 对于你们所有人来说,就像我一样,如果这是popup的结果,这里有一些相关的问题:
使用crosstool-ng交叉编译native gcc for arm,有工具链,哪个体系结构和哪个构build,主机和目标?
如何使用crosstool-NG来改变GCC的“加拿大十字”汇编的主机types
交叉编译gcc
用Code Sourcery编译GCC
使用交叉编译器编译原生GCC for arm
经过大量的图书馆和工具链的努力,我自己设法做到了这一点。
您需要首先设置交叉编译器来编译ARM926J CPU的ARMv5可执行文件。 为什么ARMv5和ARM926J? 因为我使用SAM9N12,它使用ARM926J代码(运行本机JVM的Jazelle为J),该内核是ARMv5体系结构。
您可以从ARM的基于启动板的GCC仓库中获得交叉编译器,也可以使用Crosstools-NG自己创建交叉编译器。 建议使用Crosstools-NG,因为您可以使用自己的标准C库(与uClib或musl相比,GNU的版本是可怕的)。
最后,您需要使用交叉编译器来生成本机ARM编译器。 通常情况下,你可以用Crosstools-NG来做到这一点,但是cross-native
选项并没有实现,所以你必须做一个叫做Canadian-Build
工作,但是可以做一些冗余的工作。
由于这个问题只是针对使用什么样的通用工作流的思想,所以我会保持原样,并且向您推荐我的另一个问题 ,具体问到如何使用Crosstools-NG进行Canadian-Build
,考虑到Cross-Native
尚未实现。