在工作中,原本是编译没有问题的,由于修改代码突然就出现编译不通过。提示 make mrproper,但是 make mrproper 也会报错。
解决思路:
一、
很清晰的提示 kernel-3.10 is not clean, please run 'make mrproper'
切换到内核目录 kernel-3.10 执行 make mrproper ,瞬间蒙X了。也会报错。
"CONFIG_TRUSTONIC_TEE_SUPPORT = "
scripts/Makefile.clean:17: /home/wangwm/mt6735/kernel-3.10/drivers/misc/mediatek/cpu_stress/Makefile: No such file or directory
make[4]: *** No rule to make target `/home/wangwm/mt6735/kernel-3.10/drivers/misc/mediatek/cpu_stress/Makefile'. Stop.
make[3]: *** [drivers/misc/mediatek/cpu_stress] Error 2
make mrproper这个命令报错是因为在Makefile里面有指定路径但是却没有改路径时就会报错,类似这种:
obj-$(CONFIG_MTK_CPU_STRESS) += cpu_stress/ 不管 CONFIG_MTK_CPU_STRESS 这个有没有定义,没有 cpu_stress 这个目录就会报错。
二、
另外我们也可以看一下 命令 make mrproper 都是做了什么
make mrproper
Remove all generated files + config + various backup files
就是删除一些文件。
其实我们也可以看到在 kernel-3.10 目录下 Makefile
解决思路:
一、
很清晰的提示 kernel-3.10 is not clean, please run 'make mrproper'
切换到内核目录 kernel-3.10 执行 make mrproper ,瞬间蒙X了。也会报错。
"CONFIG_TRUSTONIC_TEE_SUPPORT = "
scripts/Makefile.clean:17: /home/wangwm/mt6735/kernel-3.10/drivers/misc/mediatek/cpu_stress/Makefile: No such file or directory
make[4]: *** No rule to make target `/home/wangwm/mt6735/kernel-3.10/drivers/misc/mediatek/cpu_stress/Makefile'. Stop.
make[3]: *** [drivers/misc/mediatek/cpu_stress] Error 2
make mrproper这个命令报错是因为在Makefile里面有指定路径但是却没有改路径时就会报错,类似这种:
obj-$(CONFIG_MTK_CPU_STRESS) += cpu_stress/ 不管 CONFIG_MTK_CPU_STRESS 这个有没有定义,没有 cpu_stress 这个目录就会报错。
把这些没有用到的全部注释。
例如:mtk8783源码
vi ./drivers/misc/mediatek/Makefile
注释这3个地方即可:
#hui obj-$(CONFIG_MTK_CPU_STRESS) += cpu_stress/
#hui obj-$(CONFIG_MTK_TC1_FEATURE) += tc1_interface/
#hui obj-$(CONFIG_MTK_AEE_MRDUMP) += mrdump/
make -C /home/bill/work/mt8783_ori1121/out/target/product/elink8783_tb_l1/obj/KERNEL_OBJ KBUILD_SRC=/home/bill/work/mt8783_ori1121/kernel-3.10 KBUILD_EXTMOD="" -f /home/bill/work/mt8783_ori1121/kernel-3.10/Makefile mrproper ARCH=arm64
二、
另外我们也可以看一下 命令 make mrproper 都是做了什么
make mrproper
Remove all generated files + config + various backup files
就是删除一些文件。
其实我们也可以看到在 kernel-3.10 目录下 Makefile
# prepare3 is used to check if weare building in a separate output directory,
# and if so do:
# 1) Check that make has not beenexecuted in the kernel src $(srctree)
prepare3:include/config/kernel.release
ifneq ($(KBUILD_SRC),)
@$(kecho) ' Using $(srctree) as sourcefor kernel'
$(Q)if [ -f $(srctree)/.config-o -d $(srctree)/include/config ]; then \
echo>&2 " $(srctree) is not clean, please run 'make mrproper'"; \
echo>&2 " in the '$(srctree)' directory.";\
/bin/false; \
fi;
endif
这里就是我们最开始编译报错的脚本,从里我们也可以看出是要删除
kernel-3.10 目录下的一些文件。
也就是我们可以手动去检查一下这些文件,手动删除就可以了。