编译linux内核时.config ,Kconfig, make menuconfig的联系

我们在编译linux内核时都会用到几个文件 .config文件 Kconfig文件 Makefile文件以及make menuconfig命令出现的菜单,那他们之间有什么联系呢?

首先,Makefile文件不用多讲,这是linux内核的编译文件,使用make uImage或make zImage时就是用Makefile文件来编译的。

对于make menuconfig来讲,这是一个菜单配置内核文件,菜单文件中主要包括下面几种情况

(1)[ ] 方括号类型
按下空格键来选择,
*     <====>   y    如果选择为y,则代表该配置选项(功能)被编译进内核
make uImage      (led.c驱动要放在对应目录中)

空格           不选
(2)< >  尖括号类型

                               有三种状态  *代表选中    没有*代表未选中    M代表模块
M     <====>   M    编译成模块 ,没有编译成内核。使用时可以通过make modules 生成.ko文件,然后手动加载。   
         (3)( )
圆括号类型

          某个小括号可能存放了十进制整数,也可能存放十六进制整数,还有可能存放字符串。


上图是make menuconnfig中字符驱动下的菜单显示


Kconfig和make menuconfig是一一对应的。源码下有多个Kconfig文件,对应make menuconfig中的每一页。我们看一下源码下的Kconfig


和主菜单(下图)实际上是一样的,最后一行是包含的目录,这样就可以继续向下寻找了。


简单了解一下在Kconfig中的语法规则,我们来看一下驱动中字符设备中的Kconfig


菜单中对应如下



首先是

第一行 config  XXXXXXX 打头的,这里的XXXXXX是要和.config配合使用的

第二行 是对应刚才说的[] <> ()三种类型以及显示在menu中名字,

             bool 对应[]

             tristate 对应<>  triple state 三态的简称

             string 对应()

             后面引号中跟着的是显示在menu中信息

第三行 设置一下默认值 y代表是选中 n为不选中

第四行 可以添加一些帮助信息给用户显示

要添加一个模块,就根据类似写法在Kconfig中添加 就能在make menuconfig中显示了。

对于.config属于内核的配置文件,我们来看一看对应的字符驱动


之前说到Kconfig中的第一行会和.config产生联系,.config中会自动在Kconfig中起的名字前加上大写的CONFIG_。y表示选中。这个配置是如何起作用的呢?

我们来看看对应驱动字符设备的Makefile


是否编译对应文件 就看CONFIG_XXXXX设置为何值了。

添加一个模块 要在两个地方进行添加,1是在对应文件的Kconfig中添加,然后就进入make menuconfig中设置,设置完.config中就自动有了对应的配置。2然后在对应的Makefile中进行编译配置。
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值