我是靠谱客的博主 明理麦片,最近开发中收集的这篇文章主要介绍LINUX内核编译--Makefile、.config、Kconfig、menuconfig解析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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,在编译时就会编译进内核中。而蓝色的部分就是没有定义的,编译时就不会编译进内核。

最后

以上就是明理麦片为你收集整理的LINUX内核编译--Makefile、.config、Kconfig、menuconfig解析的全部内容,希望文章能够帮你解决LINUX内核编译--Makefile、.config、Kconfig、menuconfig解析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部