本文具体分析 配置 Linux内核源码时,顶层 Makefile实际做的事。具体分析 "make xxx_defconfig"配置Linux内核源码时,顶层 Makefile做了什么。
本文续上一篇文章,地址如下:
Linux内核顶层Makefile的make xxx_defconfig过程分析二_凌肖战的博客-CSDN博客
当 配置 Linux内核源码(即执行 "make xxx_defconfig"命令)时,顶层 Makefile实际执行如下命令:
make -f ./scripts/Makefile.build obj= scripts/basic
make -f ./scripts/Makefile.build obj= scripts/kconfig xxx_defconfig
make -f ./scripts/Makefile.build obj= scripts/kconfig xxx_defconfig
42 kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
43 kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuilddir)/Kbuild,$(kbuild-dir)/Makefile)
44 include $(kbuild-file)
kbuild-dir = ./scripts/kconfig
kbuild-file = ./scripts/kconfig/Makefile
include ./scripts/kconfig/Makefile
104 %_defconfig: $(obj)/conf
105 $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
%_defconfig: scripts/kconfig/conf
@ scripts/kconfig/conf --defconfig=arch/arm/configs/%_defconfig Kconfig
在编译 Linux内核源码时,需要对内核进行配置,这里选择执行 "make xxx_defconfig" 命令进行配置(即使用配置文件)。
在执行 "make xxx_defconfig" 命令进行配置时,Linux顶层 Makefile 实际执行如下内容:
make -f ./scripts/Makefile.build obj= scripts/basic
make -f ./scripts/Makefile.build obj= scripts/kconfig xxx_defconfig
经过几篇文章的分析,这两条命令实际做了如下工作:
第一行命令 scripts_basic:就是编译出 scripts/basic/fixdep 和 scripts/basic/bin2c 这 两个软件。
第二行命令:会编译 scripts/kconfig/conf.c 生成 conf 这个软件。 此软件就会将 %_defconfig 中的配置输出到 .config 文件中。