如何将工具链交叉编译到 ARMv5 平台?
How to cross compile a toolchain to an ARMv5 platform?
我不希望设置工具链以在 x86 主机上交叉编译到 ARMv5 目标(我已经拥有它并且它正在运行),而是在 ARMv5 平台上编译到 ARMv5 目标(本身)的工具链.我知道我总是可以交叉编译我需要的所有应用程序,但我想在系统上有一个编译器 运行 这样我就能很好地了解如何对 Rasberry Pi 和 Beaglebone 等其他开发板执行相同的操作,因为它看起来很酷。
我研究过 crosstool-ng,但据我了解,它似乎只适用于各种目标的 x86 主机,而不是各种目标的各种主机。
有没有推荐的工作流程?我在想看看那些处理像 Beaglebone 这样的板的分发的人是如何做到的,但我似乎找不到任何相关信息,他们是否使用了一些专有解决方案?
有问题的工具链是来自 Sourcery CodeBench Lite 的 this one,其中包括源代码,但似乎只是 运行 通过已经编译的交叉编译器来解决这个问题。
我发现了一些相关的问题,但似乎 none 的问题都解决了这个问题,有没有这方面的指南?对于所有像我一样用谷歌搜索的人,如果这会出现在你的结果中,这里有一些相关的问题:
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
在大量使用库和工具链之后,我自己设法做到了这一点。
您需要先设置一个交叉编译器来为 ARM926J CPU 编译 ARMv5 可执行文件。为什么选择 ARMv5 和 ARM926J?因为我使用的是 SAM9N12,它利用了 ARM926J 代码(J 表示运行本机 JVM 的 Jazelle),该内核是 ARMv5 架构。
您可以从 ARM launchpad based GCC repo 获得交叉编译器,也可以使用 Crosstools-NG 自己制作一个。推荐使用 Crosstools-NG,因为你可以使用自己的标准 C 库(GNU 的版本与 uClib 或 musl 相比是可怕的)。
最后,您需要使用交叉编译器制作原生 ARM 编译器。通常,您可以使用 Crosstools-NG 执行此操作,但未实现 cross-native
选项,因此您必须执行所谓的 Canadian-Build
,它工作正常但执行一些冗余步骤。
由于这个问题只是为了了解要使用的一般工作流程,所以我将保持原样并让您参考我的 具体询问如何将 Canadian-Build
与 Crosstools-NG 一起使用考虑到 Cross-Native
尚未实施。
我不希望设置工具链以在 x86 主机上交叉编译到 ARMv5 目标(我已经拥有它并且它正在运行),而是在 ARMv5 平台上编译到 ARMv5 目标(本身)的工具链.我知道我总是可以交叉编译我需要的所有应用程序,但我想在系统上有一个编译器 运行 这样我就能很好地了解如何对 Rasberry Pi 和 Beaglebone 等其他开发板执行相同的操作,因为它看起来很酷。
我研究过 crosstool-ng,但据我了解,它似乎只适用于各种目标的 x86 主机,而不是各种目标的各种主机。
有没有推荐的工作流程?我在想看看那些处理像 Beaglebone 这样的板的分发的人是如何做到的,但我似乎找不到任何相关信息,他们是否使用了一些专有解决方案?
有问题的工具链是来自 Sourcery CodeBench Lite 的 this one,其中包括源代码,但似乎只是 运行 通过已经编译的交叉编译器来解决这个问题。
我发现了一些相关的问题,但似乎 none 的问题都解决了这个问题,有没有这方面的指南?对于所有像我一样用谷歌搜索的人,如果这会出现在你的结果中,这里有一些相关的问题:
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
在大量使用库和工具链之后,我自己设法做到了这一点。
您需要先设置一个交叉编译器来为 ARM926J CPU 编译 ARMv5 可执行文件。为什么选择 ARMv5 和 ARM926J?因为我使用的是 SAM9N12,它利用了 ARM926J 代码(J 表示运行本机 JVM 的 Jazelle),该内核是 ARMv5 架构。
您可以从 ARM launchpad based GCC repo 获得交叉编译器,也可以使用 Crosstools-NG 自己制作一个。推荐使用 Crosstools-NG,因为你可以使用自己的标准 C 库(GNU 的版本与 uClib 或 musl 相比是可怕的)。
最后,您需要使用交叉编译器制作原生 ARM 编译器。通常,您可以使用 Crosstools-NG 执行此操作,但未实现 cross-native
选项,因此您必须执行所谓的 Canadian-Build
,它工作正常但执行一些冗余步骤。
由于这个问题只是为了了解要使用的一般工作流程,所以我将保持原样并让您参考我的 Canadian-Build
与 Crosstools-NG 一起使用考虑到 Cross-Native
尚未实施。