版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengfeng0328/article/details/83350964
在顶层目录执行 make menuconfig 时:
menuconfig: clean config.in
$(MAKE) -C scripts/lxdialog all
$(CONFIG_SHELL) scripts/Menuconfig config.in
可以看到 menuconfig 目标的依赖是 clean 命令和 config.in 文件
然后执行 scripts/lxdialog 目录下的 Makefile文件
再运行$(CONFIG_SHELL) scripts/Menuconfig config.in
问题是:$(CONFIG_SHELL)是什么玩意?
在 config.mk 文件中有一段:
CONFIG_SHELL:= $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
else if [ -x /bin/bash ]; then echo /bin/bash; \
else echo sh; fi ; fi)
$(CONFIG_SHELL) scripts/Menuconfig config.in 就是用 scripts/Menuconfig 脚本解释 config.in
经过 make menuconfig 后就可以读出配置选项并显示图形配置界面了
问题是,配置生效文件在哪里? 答案是一个隐藏文件.config 文件
运行 make menuconfig 进行配置后,然后就是运行 make 了,我们来看看这个 make 做了什么:
make 运行顶层目录的 Makefile文件
顶层 Makefile 包含了 config.mk 文件
同时 config.mk 文件又包含了.config 文件
综上可得框图: