Kconfig 、menuconfig和.config
一. 开始实验
笔者在Linux-5.10内核下进行的实验
-
修改一个Kconfig
$ pwd /home/stu/storage/linux-stm32mp-5.10.10-r0/linux-5.10.10/drivers/block $ vi Kconfig
-
笔者选择的是内核中相对路径drivers下的block文件夹中的Kconfig
-
可以在末尾的位置添加如下代码
config ANDREA_BLOCK_TEST tristate "hello hello hello"
-
回到内核源码的顶层目录
$ pwd /home/stu/storage/linux-stm32mp-5.10.10-r0/linux-5.10.10
-
执行
$ make menuconfig
-
保存并退出
-
内核源码顶层目录下打开 .config , 发现多了一个配置设置成m的方式
二. 总结
- 回顾实验的过程,修改Linux源码目录下的,driver下的某类驱动的Kconfig,笔者修改的是块设备中的Kconfig,添加了自己的标签,叫 “hello hello hello”
- 在顶层目录下执行 make menuconfig ,弹出图形化界面,此处注意终端窗口需要足够大,不然图形化界面无法显示,然后顺着目录可以找到自己添加的一个叫 "hello hello hello"的标签
- 选择以模块的形式编译即M,保存退出menuconfig
- 查看隐藏文件.config中的内容,有个叫CONFIG_ANDREA_BLOCK_TEST的置为了m
- 通过这个实验,我们发现,Kconfig是menuconfig的配置文件,我们可以通过Kconfig添加和裁剪模块,然后图形化选配模块的编译方式,可以选择编译进内核或者以模块的方式编译,甚至不参与编译,此后,这些配置都会体现在.config这个隐藏文件中,接着我们修改顶层的Makefile,添加上对应的.o模块即可,后续我们自己添加的驱动模块的代码就可以加入到内核源码中参与编译啦~