kconfig常用语法,入门必看

kconfig

1. kconfig简单介绍

Kconfig用来配置内核,它就是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config

2. kconfig和makefile关系

makefile用来配置编译源文件的方法,kconfig可以说是以界面的方式来配置决定那些makefile文件需要编译。

看kconfig和makefile和源文件如何关联起来

makefile

obj-$(CONFIG_LCD_TRULY_TFT240240_2_E)	+= truly_tft240240_2_e.o

truly_tft240240_2_e:源文件名字
CONFIG_LCD_TRULY_TFT240240_2_E:CONFIG_是前缀,重点是后面的LCD_TRULY_TFT240240_2_E,kconfig通过LCD_TRULY_TFT240240_2_E关联到makefile,从而找到truly_tft240240_2_e,然后进行编译。
kconfig

config LCD_TRULY_TFT240240_2_E 
	tristate "SLCD TRULY TFT240240-2-E with control IC st7789s (240x240)"
	depends on BACKLIGHT_CLASS_DEVICE
	default n

这个我们只用看config config LCD_TRULY_TFT240240_2_E ,其他先不管。LCD_TRULY_TFT240240_2_E和makeflie的CONFIG_LCD_TRULY_TFT240240_2_E中的LCD_TRULY_TFT240240_2_E对应。
然后可以通过make menuconfig 查看结果
在菜单用按 / 可以搜索
在这里插入图片描述
在这里插入图片描述
这样通过空格键选中就可以选中编译的方式,如不编译、编译到内核
编译到模块。
以上就是基本的使用流程

###常见命令
在这里插入图片描述

kconfig的基本用法

  1. config条目(entry)
    config TMPFS_POSIX_ACL

    bool “Tmpfs POSIX Access Control Lists”

    depends on TMPFS

    select GENERIC_ACL

    help

    POSIX Access Control Lists (ACLs) support permissions for users and

    groups beyond the owner/group/world scheme.

    To learn more about Access Control Lists, visit the POSIX ACLs for

    Linux website http://acl.bestbits.at/.

    If you don’t know what Access Control Lists are, say N.

以上对应的配置界面为
在这里插入图片描述
解析:

        config是关键字,表示一个配置选项的开始;紧跟着的TMPFS_POSIX_ACL是配置选项的名称,省略了前缀"CONFIG_"
bool表示变量类型,即"CONFIG_ TMPFS_POSIX_ACL "的类型,有5种类型:bool、tristate、string、hex和int,其中tristate和string是基本的类型
          bool变量的值:    y和n
          tristate变量的值:y、n和m
      string变量的值:  字符串

bool之后的字符串“Tmpfs POSIX Access Control Lists”是提示信息(在上面的配置界面中就是通过它来识别CONFIG_TMPFS_POSIX_ACL),在配置界面中上下移动光标选中它时,就可以通过按空格或回车键来设置CONFIG_ TMPFS_POSIX_ACL的值(即选择了哪个值就会把该值赋值给CONFIG_TMPFS_POSIX_ACL)

depends on:表示依赖于XXX,“depends on TMPFS”表示只有当TMPFS配置选项被选中时,当前配置选项的提示信息才会出现,才能设置当前配置选项
select:是反向依赖关系的意思,即当前配置选项被选中,则GENERIC_ACL就会被选中。

  1. menu条目

menu条目用于生成菜单,其格式如下:

     menu "Floating point emulation"
 config FPE_NWFPE

 ..............

 config FPE_NWFPE_XP

 .............

 endmenu

menu之后的Floating poing emulation是菜单名。menu和endmenu间有很多config条目,在配置界面中如下所示:
在这里插入图片描述
其中Floating point emulation就是菜单名,然后进入这个菜单有 FPE_NWFPE、FPE_NWFPE_XP…等config条目选择

     Floating point emulation--->
               [] FPE_NWFPE

               [] FPE_NWFPE_XP

3.choice条目
choice条目将多个类似的配置选项组合在一起,供用户单选或多选,这不同于menu条目

choice
	prompt "soc x1000 codec type select"
	depends on SOC_X1000
config SND_ASOC_INGENIC_PHOENIX_ICDC
	tristate "Audio support for phoenix with internal codec"
	select SND_ASOC_DMA_V13
	select SND_ASOC_JZ_AIC_I2S_V13
	select SND_ASOC_JZ_ICDC_D3
	#select SND_ASOC_JZ_PCM_V13
	#select SND_ASOC_FIIO_PCM5242

config SND_ASOC_INGENIC_PHOENIX_SPDIF
tristate “Audio support for phoenix with spdif”
select SND_ASOC_DMA_V13
select SND_ASOC_JZ_AIC_SPDIF_V13
select SND_ASOC_JZ_SPDIF_V13
#select SND_ASOC_JZ_PCM_V13

endchoice

  prompt "soc x1000 codec type select"给出提示信息“soc x1000 codec type select”,光标选中后回车进入就可以看到多个config条目定义的配置选项

 choice条目中定义的变量只有bool和tristate
 如下图

在这里插入图片描述

  1. comment条目
    menu “Floating point emulation”

comment “At least one emulation must be selected”

config FPE_NWFPE

config FPE_NWFPE_XP

在界面中如下所示:
在这里插入图片描述

  1. ** source条目**
    source条目用于读取另一个Kconfig文件,如:

    source "net/Kconifg" 
    

参考了
https://www.jianshu.com/p/aba588d380c2
https://www.cnblogs.com/fah936861121/p/7229522.html

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kconfig文件的语法比较简单,主要由以下几个部分组成: 1. 菜单:用menu关键字定义,表示一个配置菜单,通常包含多个子选项。 2. 子菜单:用menuconfigconfig关键字定义,表示一个子菜单,也可以包含多个子选项。 3. 选项:用config关键字定义,表示一个配置选项,通常包括选项名、类型、默认值、帮助信息等。 4. 依赖关系:用depends on关键字定义,表示一个选项的依赖关系,当依赖的选项被选择时,该选项才会被编译进内核。 5. 选项值:用bool、tristate、string、int等关键字定义,表示选项的类型和取值范围。 下面是一个简单的Kconfig文件示例: ``` menu "My Kernel Configuration" config MY_OPTION bool "Enable My Option" default y help This option enables my custom feature. config MY_STRING string "My String Option" default "Hello World" help This option sets my custom string. config MY_INT int "My Integer Option" default 10 help This option sets my custom integer. config MY_DEPENDENCY bool "Enable My Dependency" depends on MY_OPTION default y help This option enables my dependency. endmenu ``` 在该示例中,使用menu定义了一个配置菜单“My Kernel Configuration”,包括了四个选项:MY_OPTION、MY_STRING、MY_INT和MY_DEPENDENCY。其中,MY_OPTION是一个bool类型的选项,表示是否启用自定义功能;MY_STRING是一个string类型的选项,表示自定义字符串;MY_INT是一个int类型的选项,表示自定义整数;MY_DEPENDENCY是一个bool类型的选项,表示是否启用依赖项MY_OPTION。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值