选择特定的 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 三元组作为此答案的目的。
我是嵌入式 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 三元组作为此答案的目的。