欢迎光临散文网 会员登陆 & 注册

嵌入式linux之kconfig语法解析

2023-03-29 16:24 作者:我会读心术哟  | 我要投稿

kconfig?什么是kconfig呢,就是执行make menuconfig的时候出来的那个配置界面的编译语言;linux编译是这样的make menuconfig--->生成XXX_deconfig,make XXX_deconfig最终会生成.config,然后内核或者boot会根据.config里面的配置项去选择相应的模块进行编译

    语法1:mainmenu--主菜单,就是刚刚执行make menuconfig看到的主界面

mainmenu "U-Boot $UBOOTVERSION Configuration"定义了主菜单的名字

主菜单

语法2:menu生成菜单条目/endmenu菜单条目结束

条目一

menu "General setup"

    config config LOCALVERSION

。。。。。

endmenu

条目二

menu "Boot images"

    config SUPPORT_SPL

。。。。。。

endmenu

图2

语法3:config  条目  

config 后面配置的就是config条目,后面.config里面的配置项就是根据这个

配置项名字加上“CONFIG_”前缀

config CC_OPTIMIZE_FOR_SIZE

bool "Optimize for size"

default y

help

  Enabling this option will pass "-Os" instead of "-O2" to gcc

  resulting in a smaller U-Boot image.

  This option is enabled by default for U-Boot.

例如此处的配置项,生成后在.config里面就变成CONFIG_CC_OPTIMIZE_FOR_SIZE  y

bool 是类型,总攻有bool、tristate、string、hex 和 int,5种类型,最常用的是 bool、tristate 和 string 这三种,bool 类型有两种值:y 和 n,当为 y 的时候表示使能这个配置项,当为 n 的时候就禁止这个配置项。tristate 类型有三种值:y、m 和 n,其中 y 和 n 的涵义与 bool 类型一样,m 表示将这个配置项编译为模块。string 为字符串类型

“default y”表示 CONFIG_CC_OPTIMIZE_FOR_SIZE  的默认值就是 y

help 表示帮助信息,告诉我们配置项的含义

语法4:depends on 和 和 select

config SYS_GENERIC_BOARD

    bool

     depends on HAVE_GENERIC_BOARD

, “depends on”说明“SYS_GENERIC_BOARD”项依赖于“HAVE_GENERIC_BOARD”,

也就是说“HAVE_GENERIC_BOARD”被选中以后“SYS_GENERIC_BOARD”才能被选中。


bool "ARM architecture"

select CREATE_ARCH_SYMLINK

select HAVE_PRIVATE_LIBGCC if !ARM64

select HAVE_GENERIC_BOARD

select SYS_GENERIC_BOARD

select SUPPORT_OF_CONTROL

“select”表示方向依赖,当选中“ARM”以后,后面select 的选项也会被选择


语法5:choice/endchoice

代码段定义了一组可选择项,将多个类似的配置项组合在一起,类似于menu

语法6:menuconfig

menuconfig MODULES

 bool "菜单"

 if MODULES

。。。。。。

 endif # MODULES

主要看这个if

MODULES这个条目需要选中,if里面的条目才能被选择



语法7:comment

comment "Generic NAND options"这一条只是用来注释

语法8:source

source 用于读取另一个 Kconfig,比如:

source "arch/Kconfig"


最后记住Kconfig 文件的最终目的就是在.config 文件中生成以“CONFIG_”开头的变量



嵌入式linux之kconfig语法解析的评论 (共 条)

分享到微博请遵守国家法律