LINUX内核编译--Makefile、.config、Kconfig、menuconfig解析

本文详细解析了LINUX内核编译过程中Makefile、.config、Kconfig和menuconfig的作用。Makefile负责规定内核编译规则和顺序;menuconfig提供图形配置界面,生成.config配置文件;Kconfig文件定义配置选项,被menuconfig调用;.config文件存储配置宏定义,影响内核编译内容。

LINUX内核编译–Makefile、.config、Kconfig、menuconfig关系说明

Makefile

makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
makefile文件是脚本文件,在内核目录(/home/topeet/android4.0/iTop4412_Kernel_3.0)下的子目录中都会有一个Makefile文件,用来规定哪些文件会编译到内核中。
目录/drivers/char下的makefile
内核目录/drivers/char目录下的Makefile中定义了要编译进内核的模块,其中绿色字体表示的是条件编译,即定义了CONFIG_XXX_XXX才会编译进内核。
obj-y表示强制编译进内核中。
Makefile(_driver_char_LEDS)
打开“内核目录/drivers/char”下的Makefile,其中obj-$(CONFIG_LEDS_CTL) += itop4412_leds.o表示如果定义了 CONFIG_LEDS_CTL 则将 itop4412_leds.o 编译进内核中,itop4412_leds.c是led灯的驱动文件。所以Makefile定义了内核有哪些驱动,以及编译哪些驱动文件。

Menucofig

在嵌入式领域当中,在配置内核的时候会有很多配置方法,比如说make config(基于文本的为传统的配置界面)、make oldconfig(如何只想在原来内核配置的基础上修改一部分,则会省去很多麻烦)、make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)、make menuconfig(基于文本选择的配置界面,字符终端下推荐使用),以上4种配置方式的目的都是在源码的顶层目录下面生成一个 .config 文件(配置文件),那么在我们嵌入式开发当中,经常使用的和推荐使用的是make menuconfig这种配置方法。
即menucofig就是个图形的配置界面,用来配置编译内核的选项,包括编译哪些模块等,配置完成后会生成相应的.config配置文件

Kconfig

Kconfig与menuconfig之间的关系比较密切,menuconfig就是通过调用各级目录下Kconfig文件来形成图形界面的,下图是"内核目录"下的Kconfig文件,它调用了各级子目录中的Kconfig文件。
内核目录下的Kconfig文件
"内核目录"下的Kconfig文件

内核目录/drivers"下的Kconfig文件
内核目录/drivers"下的Kconfig文件

例:在menuconfig中添加hello设备选项

在menuconfig中添加hello设备选项
仿照Kconfig编写规范,添加HELLO_CTL选项,如图中所示,其中tristate表示三态,bool表示两种选项。
menuconfig添加HELLO
再次运行make menuconfig可以发现多出了HELLO配置的选项。

.config

.config文件是系统配置文件,通过配置menuconfig生成,并供make命令使用。
.config(内核目录)
打开 “内核目录” 下的.config文件,里面都是些宏定义,如其中CONFIG_HELLO_CTL=y就表示定义了HELLO_CTL,在编译时就会编译进内核中。而蓝色的部分就是没有定义的,编译时就不会编译进内核。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值