7.3 .config配置文件介绍
我们在图形化配置界面配置好了以后,会得到一个.config配置文件。在编译内核的时候会根据这个.config文件来编译内核。这样是不是就实现了通过图像化界面的配置来配置内核呀。用通俗的话来说,Kconfig就是饭店的菜单,.config就是客人点完的菜。然后厨师会根据客人点的菜,也就是.config来做菜,对应的操作就是编译内核。
那.config是如何产生的呢?对应上面的例子就是要有服务员给我们点菜呀。
当我们使用make menuconfig的时候,会通过mconf程序去解析Kconfig文件,然后生成对应的配置文件.config。所以这个mconf就是服务员。
mconf程序源码在内核源码scripts/kconfig目录下,如下图所示,这里不对Kconfig文件的解析流程进行分析,感兴趣的同学可以自行分析下mconf的源码。有了.config配置文件以后,内核就可以根据这个配置文件来编译内核,比如控制某些驱动编译进内核,或者控制某些驱动不编译内核。那他是怎么实现的呢?
.config会通过syncconfig目标将.config作为输入然后输出需要文件,这里我们重点更关注auto.conf和autoconf.h。如下图(图7-19)所示:在auto.conf文件中,存放的是配置信息。如下图(图7-20)所示:在内核源码的顶层Makefile中会包含auto.conf文件,以此引用其中的变量来控制Makefile的动作,如哪些驱动编译,哪些驱动不编译。如:
auto.conf文件中Makefile中包含auto.conf文件
内核源码下drivers/A/Makefile引用这个变量注:obj-y就是编译进内核,obj-m就是编译成ko文件。
在autoconf.h中,是C语言代码。用来配合编译时的条件选择。如下图(图7-21)所示:更多内容可以B站搜索北京迅为/CSDN搜索迅为RK3568开发板