Kconfig解析
编译内核时用于配置的Kconfig文件
以内核中的ttyprintk.c为例,其位于/kernel-sources/dirver/char/ttyprintk.c
如何将其编译进内核?
在char目录下有Kconfig文件,其中有如下内容
tristate 表示该模块可以选择 Y N M(以.ko形式),后面为该模块的描述,
如果是bool则表示该模块只能选择 Y N
depends on EXPERT && TTY 表示依赖关系,其同时依赖EXPERT 和 TTY
default n 表示默认为关闭
help下面的内容为提醒信息,在menuconfig中找到该模块,键入?可以查看help如下图
如何编译进内核?
当在menuconfig配置为yes后,会在.config中生成相关配置,以ttyprintk为例,在.config中会生成以下内容
CONFIG_TTY_PRINTK=y
在内核代码中会有以下内容
#ifdef CONFIG_TTY_PRINTK
// 相关的代码,当 CONFIG_TTY_PRINTK 被定义时编译
#endif
在ttyprintk.c的同级Makefile中有
obj-$(CONFIG_TTY_PRINTK) += ttyprintk.o
CONFIG_TTY_PRINTK被定义为y,因此会编译ttyprintk.o
添加自己的驱动代码目录和子目录
如何添加自己的驱动代码,结构如在
在char下添加test目录,其中test.c为main函数文件,在Kconfig中配置如下
Makefile如下