7.3 .config配置文件介绍

我们在图形化配置界面配置好了以后,会得到一个.config配置文件。在编译内核的时候会根据这个.config文件来编译内核。这样是不是就实现了通过图像化界面的配置来配置内核呀。用通俗的话来说,Kconfig就是饭店的菜单,.config就是客人点完的菜。然后厨师会根据客人点的菜,也就是.config来做菜,对应的操作就是编译内核。

那.config是如何产生的呢?对应上面的例子就是要有服务员给我们点菜呀。

当我们使用make menuconfig的时候,会通过mconf程序去解析Kconfig文件,然后生成对应的配置文件.config。所以这个mconf就是服务员。

mconf程序源码在内核源码scripts/kconfig目录下,如下图所示,这里不对Kconfig文件的解析流程进行分析,感兴趣的同学可以自行分析下mconf的源码。

RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验(三)_搜索

有了.config配置文件以后,内核就可以根据这个配置文件来编译内核,比如控制某些驱动编译进内核,或者控制某些驱动不编译内核。那他是怎么实现的呢?

.config会通过syncconfig目标将.config作为输入然后输出需要文件,这里我们重点更关注auto.conf和autoconf.h。如下图(图7-19)所示:

RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验(三)_搜索_02

在auto.conf文件中,存放的是配置信息。如下图(图7-20)所示:

RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验(三)_编译内核_03

在内核源码的顶层Makefile中会包含auto.conf文件,以此引用其中的变量来控制Makefile的动作,如哪些驱动编译,哪些驱动不编译。如:

auto.conf文件中

RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验(三)_搜索_04

Makefile中包含auto.conf文件

RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验(三)_编译内核_05

内核源码下drivers/A/Makefile引用这个变量

RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验(三)_配置文件_06

注:obj-y就是编译进内核,obj-m就是编译成ko文件。

在autoconf.h中,是C语言代码。用来配合编译时的条件选择。如下图(图7-21)所示:

RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验(三)_配置文件_07

更多内容可以B站搜索北京迅为/CSDN搜索迅为RK3568开发板