**Makefile与Kconfig**

文章目录


参考资料:
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(表达式)定义为:
::=
‘=’
‘!=’
‘(’ ‘)’
‘!’
‘&&’
‘||’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值