Linux源码Kconfig文件语法分析

Kconfig是我们进行内核配置的关键文件,用于生成menuconfig的界面并生成最终确定编译选项的.config文件。关于Kconfig文件的编写规则,在Documentation/kbuild/kconfig-language.txt有详尽的叙述。这里主要用实例进行语法分析。

config

确定了条目前面是否有选项,menuconfig界面中的条目中一共有3种主动选项,分别是[ ],< >( ),分别表示"被编译进内核or舍弃","编译进内核or编译成模块or舍弃", "按照提示输入一个数字",分别对应Kconfig文件中的bool,tristateint{ }- -属于被动选项,是配置系统根据依赖关系自动生成的选项,不能被手动修改。
1022162-20161204170103490-1786922138.png
1022162-20161204170107912-308931664.png

即图形界面中有--->的条目,回车后可以展开。条目前面没有选项
1022162-20161204170411396-1031446652.png
!1022162-20161204171141459-1055444.png


1022162-20161204170415677-1545317589.png

是menu和config的结合体,既在前面有选项,回车后也可以展开。
1022162-20161204165326849-1152606067.png
1022162-20161204170151318-1797584401.png

choice/endchoice

展开之后会有多选一的界面,每种选项都有独立的config管理
1022162-20161204171556177-1752964533.png
1022162-20161204171600646-97360519.png
1022162-20161204171604568-1301383238.png

comment

1022162-20161204171859162-662046583.png
1022162-20161204171904131-2138325327.png

if/endif

如果if之后的值被选定了,里面的内容才能展开
1022162-20161204175014131-1344714824.png
1022162-20161204175019193-1290374412.png
1022162-20161204175030099-1660517054.png
1022162-20161204175039568-1059082491.png

source

表示调用指定路径的Kconfig,相当于C中的include,上例已经给出说明

depends on

实现配置的相当关键的关键字,表示当前选项依赖于另外一个选项,如果另外一个不选,这个都不会出现。
1022162-20161204180009506-1959384842.png
1022162-20161204180013802-374604716.png
1022162-20161204180019740-1973892369.png
1022162-20161204180023896-933070749.png
1022162-20161204180028240-1601478542.png

select

另一个相当关键的关键字,表示当前选项需要另外选项的支持,如果选了当前选项,那么其后的选项会被强制选择,{ }- -就是这个实现的。下例中,只要这些Kconfig中进行了"select HAVE_ARM_ARCH_TIMER",都会导致"HAVE_ARM_ARCH_TIMER"被强制选择,表现在menuconfig上就是"Architected timer support"被强制选定
1022162-20161204180513912-1673882001.png
1022162-20161204181532068-835119198.png

1022162-20161204181334177-420570376.png

.config文件分析

经过适当的配置之后保存就会在顶层目录下生成.config文件
=y表示该配置将会被编译进内核,=m表示该配置需要单独编译成模块
1022162-20161204181109631-14529620.png
1022162-20161204181104146-896323284.png

1022162-20161204181123771-2061689542.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值