概述
文章目录
- 详细内容**
参考资料:
1、 宋宝华 《Linux设备驱动开发详解》第3.4节内容;
2、 https://www.cnblogs.com/image-eye/archive/2011/08/28/2156005.html Linux内核源码树学习:Kconfig和Makefile
详细内容**
一、Kconfig和Makefile的作用
a、这两个文档存在于linux内核源码树的每个目录下;
b、每个Kconfig分别描述了所属目录源文档相关的内核配置菜单,在执行内核配置make menuconfig时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文档中。 c、在内核编译时,主Makefile调用这个.config,就知道了用户的选择
d、假如要想添加新的驱动到内核的源码中,要修改Kconfig,这样就能够选择这个驱动,假如想使这个驱动被编译,则要修改Makefile
二、两种文件的详细介绍
Kconfig:
1、配置选项
config symbol
options (bool tristate string hex int)
depends on
help
(1)、“config”关键字定义新的配置选项;
(2)、每个config菜单项都要有属性(类型、数据范围、输入提示、依赖关系、选择关系及帮助信息、默认值等),如类型包括:bool布尔类型、 tristate三态(内建、模块、移除)等;
(3)、依赖型定义depends on或requires,指此菜单的出现和否依赖于另一个定义;
(4)、帮助性定义,只是增加帮助用关键字help或—help—。
举例:某平台下audio驱动中的codec驱动中Kconfig文件
config SND_SOC_SPRD_CODEC_SC2721 //定义SND_SOC_SPRD_CODEC_SC2721选项
tristate #"Sprd codec sc2721" //类型配置为tristate三态
depends on PMIC_SC2721 //依赖定义
select POWER_SUPPLY //反向依赖(选择)关系
help //帮助信息
If the codec is the series of sc2721, set this to Y or M, else N.
2、配置选项中各类属性的一般格式
(1)类型
包括:bool tristste string hex int,其中tristste 和string是两种基本类型。
bool变量的值:y 和 n
tristate变量的值:y、n和m
string变量的值: 字符串
注解:y是选择内建,直接编译成内核映像;m是选择生成内核模块;n形式的目标不会被编译
一般格式为:类型 文件名
Eg : tristate #“Sprd codec sc2721”
(2)输入提示
一般格式:prompt [ if < expr>],其中,if用来表示该提示的依赖关系,是可选的。
(3)、默认值
一般格式:default [ if < expr> ],若用户不设置,该配置选项的值就是默认值。
(4)、依赖关系
一般格式:depend on(或者requires)< expr >,若定义了多重依赖关系,用 && 隔开。依赖关系也可以用到其他属性中(接受if表达式)。
Eg: bool “foo”if BAR
default y if BAR
和
depends on BAR
bool “foo”
default y
(5)、选择关系(也称反向依赖关系)
一般格式:select [ if ],A如果选择了B,则在A被选中的情况下,B自动被选中。
(6)、数据范围
一般格式:range [ if ]
Kconfig中的expr(表达式)定义为:
::=
‘=’
‘!=’
‘(’ ‘)’
‘!’
‘&&’
‘||’
最后
以上就是缓慢耳机为你收集整理的**Makefile与Kconfig**的全部内容,希望文章能够帮你解决**Makefile与Kconfig**所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复