kconfig常用语法,入门必看

Kconfig是Linux内核配置的源文件,它定义了内核配置选项,并生成配置界面。配置选项通过依赖关系与Makefile连接,决定哪些源文件需要编译。makefile中的CONFIG_变量与kconfig中的配置项对应,通过menuconfig等命令进行配置。例如,configTMPFS_POSIX_ACL是一个bool类型配置,影响POSIX ACL支持。choice条目允许用户从多个类似选项中选择一个。Kconfig还支持通过source指令包含其他Kconfig文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值