我是靠谱客的博主 缓慢耳机,最近开发中收集的这篇文章主要介绍**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(表达式)定义为:
::=
‘=’
‘!=’
‘(’ ‘)’
‘!’
‘&&’
‘||’

最后

以上就是缓慢耳机为你收集整理的**Makefile与Kconfig**的全部内容,希望文章能够帮你解决**Makefile与Kconfig**所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部