[qiaods]/home/qiaods/kernel>./bb.sh
make[1]: 进入目录“/home/qiaods/.kb/build-ls”
GEN ./Makefile
Using /home/qiaods/kernel as source for kernel
HOSTCC scripts/mod/modpost.o
CC scripts/mod/devicetable-offsets.s
HOSTCC scripts/mod/sumversion.o
In file included from /home/qiaods/kernel/include/linux/types.h:6:0,
from /home/qiaods/kernel/include/linux/mod_devicetable.h:12,
from /home/qiaods/kernel/scripts/mod/devicetable-offsets.c:3:
/home/qiaods/kernel/include/uapi/linux/types.h:5:10: fatal error: asm/types.h: 没有那个文件或目录
#include <asm/types.h>
^~~~~~~~~~~~~
compilation terminated.
make[3]: *** [scripts/mod/devicetable-offsets.s] 错误 1
make[3]: *** 正在等待未完成的任务....
make[2]: *** [scripts/mod] 错误 2
make[1]: *** [scripts] 错误 2
make[1]: 离开目录“/home/qiaods/.kb/build-ls”
make: *** [sub-make] 错误 2
出现这样的编译问题,网上大部分解决办法为在内核源码中建立软连接指向本机系统/usr/include/asm文件夹,可是解决不了问题,分析后得出该问题的原因为内核源码中可能存在已编译的生成的文件和配置文件,执行以下命令清除后内核可正常编译:
make mrproper
Linux下面去编译项目之前,一般常会用make mrproper去先删除之前编译所生成的文件和配置文件,备份文件等,其中,mrproper和distclean,clean之间的区别,Linux内核源码根目录下面的makefile中,有很清晰的解释
help:
@echo的清洗目标:
@echo ' clean -删除大多数生成的文件,但保留配置和'
@echo '足够的构建支持来构建外部模块'
@echo ' mrproper -删除所有生成的文件+配置+各种备份文件'
@echo ' distclean - mrproper +删除编辑器备份和补丁文件'