选择特定的 ARM arch 进行编译

Selecting a specific ARM arch for compiling

我是嵌入式 linux 的新手,刚开始为 raspberry 4 开发板构建自定义内核。有几个关于如何为特定板编译 linux 内核的教程。据我了解,我可以将 cpu 类型和工具链指定为参数以使用 ARCH 和 CROSS_COMPILE 发出命令,但我想知道编译器如何识别我想要的特定 ARM 架构(ARMv7、ARMv8 等...)获取内核映像。

由于 Armv7a 和 Armv8a 架构使用 different/incompatible 指令集,您将使用的编译器将特定于 Armv7a/Armv8a 架构之一。

因此它不需要 'know' 它正在为哪个体系结构编译内核,因为它别无选择。

您的 'make' 命令必须以以下语句之一开头:

# Armv7a/Aarch32/32 bit Arm Linux kernel
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-  ... 

# Armv8a/Aarch64/64 bit Arm Linux kernel
make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-  ...

ARCH/CROSS_COMPILE 的所有不同组合均无效。

请注意,for 工具链的确切名称可能略有不同 - 我使用 Arm toolchains 三元组作为此答案的目的。