Linux内核顶层Makefile的make xxx_defconfig过程分析三

一.  Linux内核的配置工作

本文具体分析 配置 Linux内核源码时,顶层 Makefile实际做的事。具体分析 "make xxx_defconfig"配置Linux内核源码时,顶层 Makefile做了什么。

本文续上一篇文章,地址如下:

Linux内核顶层Makefile的make xxx_defconfig过程分析二_凌肖战的博客-CSDN博客

二.   make xxx_defconfig过程

1.  %config 目标对应的命令 

当 配置 Linux内核源码(即执行 "make xxx_defconfig"命令)时,顶层 Makefile实际执行如下命令:

make -f ./scripts/Makefile.build obj= scripts/basic 
make -f ./scripts/Makefile.build obj= scripts/kconfig xxx_defconfig

下面来分析  %config 目标对应的命令 :
 make -f ./scripts/Makefile.build obj= scripts/kconfig xxx_defconfig
打开文件 scripts/Makefile.build ,有如下代码:
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)

因为 src= "scripts/kconfig"srctree "." ,所以,将 上面的展开后为:
kbuild-dir = ./scripts/kconfig
kbuild-file = ./scripts/kconfig/Makefile
include ./scripts/kconfig/Makefile

可以看出, Makefile.build 会读取 scripts/kconfig/Makefile 中的内容,此文件有如下所示内
容:
104 %_defconfig: $(obj)/conf
105 $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
目标 %_defconfig xxx_defconfig 匹配,所以会执行这条规则,将其展开就是:
 
%_defconfig: scripts/kconfig/conf
@ scripts/kconfig/conf --defconfig=arch/arm/configs/%_defconfig Kconfig

%_defconfig 依赖 scripts/kconfig/conf ,所以会编译 scripts/kconfig/conf.c 生成 conf 这个软件。 此软件就会将 %_defconfig 中的配置输出到 .config 文件中,最终生成 Linux kernel 根目录下 .config 文件。

三.   make xxx_defconfig过程总结

在编译 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 文件中。

猜你喜欢

转载自blog.csdn.net/wojiaxiaohuang2014/article/details/133110195