我正在使用 zedboard,我知道如果我想为 ARM 设备编译一个程序,我需要一个在 x86 下运行并为 ARM 编译的特殊版本的 gcc(交叉编译),我想知道是否可以从x86 上的源(将在 ARM 上使用),以及如何,我不知道如何配置它。 原文由 Ekko 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一项艰巨但可行的任务。 这取决于您正在编译的 ARM 系列。在许多系统上,您会发现运行“迷你 Linux 发行版”的 Cortex-A(armv7-a 或更高版本)或 ARM11(armv6)处理器,许多 POS(销售点)设备就是这种情况。在这种情况下,您的目标可以是以下之一: arm-linux-gnueabi arm-linux-gnueabihf 其中 hf 代表 hard-float,意思是 CPU 有一个 FPU(浮点单元),所有的 Cortex-A 都支持这个,但也取决于底层的 OS。了解嵌入式 Linux 上 glibc 的版本也很重要,因为如果编译器和操作系统之间的版本不同,可能会出现意外行为。 如果您正在针对没有 MMU(Memory Magament Unit)的 ARM 处理器(如 Cortex-R 或 Cortex-M 系列)进行编译,并且因此不支持 Linux(仅支持 FreeRTOS 等微内核),那么您的目标将是(也称为裸机)金属): arm-none-eabi ARM 现在分发 GCC 的二进制文件: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads 以前是Linaro。但是,如果您需要,他们会为 arm-linu-gnueabi(软浮点)保留 GCC 7.x。 https://releases.linaro.org/components/toolchain/binaries/latest-7/ Linaro 还使用了一个称为 ABE 的构建系统,我没有找到太多关于它的文档,但他们使用它来配置和构建他们分发的工具链。 如果上述方法都不适合您,您仍然可以构建自己的工具链,我建议使用 crosstool-ng: https ://crosstool-ng.github.io/ 在 Ubuntu 等 Linux 操作系统下效果最佳(您仍然可以尝试使用 Cygwin 在 Windows 上构建它,但可能需要更多时间)。请注意,您不需要在要运行它的机器上编译它,这意味着您可以在 Ubuntu 上编译将在 Windows 上运行的 GCC,该 GCC 将生成在 ARM 处理器上运行的程序,这被称为加拿大十字。 原文由 Guillermo Garcia Maynez 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一项艰巨但可行的任务。
这取决于您正在编译的 ARM 系列。在许多系统上,您会发现运行“迷你 Linux 发行版”的 Cortex-A(armv7-a 或更高版本)或 ARM11(armv6)处理器,许多 POS(销售点)设备就是这种情况。在这种情况下,您的目标可以是以下之一:
其中 hf 代表 hard-float,意思是 CPU 有一个 FPU(浮点单元),所有的 Cortex-A 都支持这个,但也取决于底层的 OS。了解嵌入式 Linux 上 glibc 的版本也很重要,因为如果编译器和操作系统之间的版本不同,可能会出现意外行为。
如果您正在针对没有 MMU(Memory Magament Unit)的 ARM 处理器(如 Cortex-R 或 Cortex-M 系列)进行编译,并且因此不支持 Linux(仅支持 FreeRTOS 等微内核),那么您的目标将是(也称为裸机)金属):
ARM 现在分发 GCC 的二进制文件:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads
以前是Linaro。但是,如果您需要,他们会为 arm-linu-gnueabi(软浮点)保留 GCC 7.x。
https://releases.linaro.org/components/toolchain/binaries/latest-7/
Linaro 还使用了一个称为 ABE 的构建系统,我没有找到太多关于它的文档,但他们使用它来配置和构建他们分发的工具链。
如果上述方法都不适合您,您仍然可以构建自己的工具链,我建议使用 crosstool-ng: https ://crosstool-ng.github.io/
在 Ubuntu 等 Linux 操作系统下效果最佳(您仍然可以尝试使用 Cygwin 在 Windows 上构建它,但可能需要更多时间)。请注意,您不需要在要运行它的机器上编译它,这意味着您可以在 Ubuntu 上编译将在 Windows 上运行的 GCC,该 GCC 将生成在 ARM 处理器上运行的程序,这被称为加拿大十字。