Linux内核配置原理及make menuconfig和.config文件分析

一,内核配置的必要性
Linux内核源代码中集成了很多功能,具体的某个用户只会用到其中的部分功能。该用户从中挑选自己需要的功能,这就叫内核配置。

二,如何进行内核如何进行内核配置
通过make menuconfig指令进行内核配置。 对于每一个配置选项,选"y"、“m"或"n”。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。 以RTC配置为例进行讲解:Device Drivers->Real Time Clock

三,查看配置结果
.config文件保存配置结果。
选y的配置项,在.config文件中为: CONFIG_RTC_DRV_CMOS=y
选m的配置项,在.config文件中为:CONFIG_RTC_DRV_CMOS=m
选n的配置项,在.config文件中为:# CONFIG_RTC_DRV_CMOS is not set

四,make命令如何使用配置结果
/drivers/rtc/makefile
obj-$(CONFIG_RTC_DRV_CMOS) += rtc-cmos.o
相当于:
obj-y += rtc-cmos.o 编译进内核
obj-m += rtc-cmos.o 编译成模块
告诉make,在这目录里,有一个名为rtc-cmos.o的目标文件。rtc-cmos.o将从rtc-cmos.c 编译得到。
除了y、m以外的obj-x 形式的目标都不会被编译。

五,Linux源代码如何使用配置结果
相关的脚本程序根据.config文件,生成autoconf.h文件,供源程序使用。
#define CONFIG_RTC_DRV_CMOS 1
#define CONFIG_RTC_DRV_CMOS_MODULE 1

六,总结
make menuconfig 命令读取当前的.config文件,决定配置菜单的选项。
用户通过菜单配置相关功能。
保存退出后更新.config文件,供make内核使用。
Make根据.config文件,决定把那些功能编译进内核,哪些功能编译成模块。同时生产autoconf.h文件。
————————————————
版权声明:本文为CSDN博主「gaoyanli1972」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gaoyanli1972/article/details/103304544

上一篇:LeetCode 打卡 Day9 — 最长回文子串


下一篇:六、Git简介