编译LicheePi Zero Linux内核时「所选处理器不支持...」错误的解决方法
我在Windows11的Ubuntu WSL控制台里,跟着不同教程编译LicheePi Zero的Linux内核一直失败。运行以下命令:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8 all
或者另一教程的命令:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
都会出现类似错误:
/tmp/cclQPRaQ.s: Assembler messages:
/tmp/cclQPRaQ.s:88: Error: selected processor does not supportcpsid i' in ARM mode /tmp/cclQPRaQ.s:91: Error: selected processor does not supportdsb ' in ARM mode
/tmp/cclQPRaQ.s:99: Error: selected processor does not supportdsb ' in ARM mode /tmp/cclQPRaQ.s:108: Error: selected processor does not supportdsb ' in ARM mode
/tmp/cclQPRaQ.s:116: Error: selected processor does not supportdsb ' in ARM mode /tmp/cclQPRaQ.s:123: Error: selected processor does not supportcpsie i' in ARM mode
/tmp/cclQPRaQ.s:142: Error: selected processor does not supportdmb ish' in ARM mode /tmp/cclQPRaQ.s:145: Error: architectural extensionmp' is not allowed for the current base architecture
/tmp/cclQPRaQ.s:146: Error: selected processor does not supportpldw [r3]' in ARM mode /tmp/cclQPRaQ.s:149: Error: selected processor does not supportpld [r3]' in ARM mode
/tmp/cclQPRaQ.s:155: Error: selected processor does not supportldrex r2,[r3]' in ARM mode /tmp/cclQPRaQ.s:157: Error: selected processor does not supportstrex r1,r2,[r3]' in ARM mode
/tmp/cclQPRaQ.s:162: Error: selected processor does not supportdmb ish' in ARM mode make[1]: *** [scripts/Makefile.build:279: arch/arm/mm/fault-armv.o] Error 1 make[1]: *** Waiting for unfinished jobs.... CC arch/arm/kernel/ptrace.o /tmp/ccsW6s1I.s: Assembler messages: /tmp/ccsW6s1I.s:368: Error: selected processor does not supportcpsie i' in ARM mode
/tmp/ccsW6s1I.s:754: Error: selected processor does not supportdsb ishst' in ARM mode /tmp/ccsW6s1I.s:1012: Error: selected processor does not supportcpsie a' in ARM mode
make[1]: *** [scripts/Makefile.build:279: arch/arm/mm/fault.o]
Error 1
问题原因
这些错误是因为内核配置指定的ARM架构版本或处理器型号,和LicheePi Zero的硬件(全志V3s,基于ARMv7-A架构)不匹配,导致汇编器生成了当前处理器不支持的指令。
解决步骤
加载正确的默认配置
LicheePi Zero对应的内核默认配置文件是sun8i-v3s-licheepi-zero_defconfig,编译前先加载这个配置:make ARCH=arm sun8i-v3s-licheepi-zero_defconfig这一步会自动预设匹配V3s处理器的架构参数,从根源避免指令集不兼容问题。
自定义配置检查(可选)
如果需要调整内核功能,运行以下命令进入配置界面,确认System Type下的ARM architecture version设置为ARMv7,Processor type选择Allwinner V3s或对应ARMv7-A的选项:make ARCH=arm menuconfig不要随意修改架构相关选项,确保和硬件一致。
重新执行编译
加载正确配置后,再运行编译命令:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j$(nproc)用
$(nproc)自动匹配WSL可用的核心数,比固定-j8/-j16更适配环境。
额外注意事项
- 确保交叉编译工具链版本符合内核要求,推荐使用官方指定的
arm-linux-gnueabihf-gcc版本(如gcc-9或gcc-10),过高版本可能引发兼容性问题。 - WSL环境下编译时,预留足够的内存和磁盘空间,避免编译中途中断。
内容的提问来源于stack exchange,提问作者Libreik

