Kconfig文件结构(图文)简介
1 Kconfig和Makefile
2 菜单组织结构
menu 菜单名
菜单项或菜单链接1
菜单项或菜单链接2
...
菜单项或菜单链接n
endmenu
复制代码
其中菜单项就是指菜单的子菜单,所谓菜单链接就是指链接到另一个Kconfig文件,如此一下,菜单就可以实现随意嵌套了.
# drivers/Kconfig
menu "Device Drivers"
source "drivers/base/Kconfig"
source "drivers/connector/Kconfig"
source "drivers/mtd/Kconfig"
source "drivers/of/Kconfig"
source "drivers/parport/Kconfig"
source "drivers/pnp/Kconfig"
source "drivers/block/Kconfig"
source "drivers/hello/Kconfig"
config test
bool "提示字符串"
default y
...
endmenu
复制代码
2.1 菜单项
config <symbol>
<config options>
复制代码
<symbol>为一符号,就好像代码中的局部变量x一样,可用于后边的表达式中.
config UEVENT_HELPER_PATH
string "path to uevent helper"
depends on HOTPLUG
default "/sbin/hotplug"
help
Path to uevent helper program forked by the kernel for
every uevent.
复制代码
上面菜单项的属性string表示菜单的类型,每一个菜单项必须有一个类型.
2.2 菜单链接
source "路径"
复制代码
如:
source "drivers/pnp/Kconfig"
复制代码
2.3 菜单属性2.3.1 类型
string "path to uevent helper"
复制代码
bool "Prevent firmware from being built"
复制代码
注:每一个菜单项必须有类型属性。
2.3.2 默认值
config UEVENT_HELPER_PATH
string "path to uevent helper"
default "/sbin/hotplug"
复制代码
表示当前菜单项若用户没有选择或输入任何值时,所取的默认值.上述所示为当前的默认值为"/sbin/totplug".
2.3.3 依赖
depends on/requires <expr>
复制代码
<expre>为表达式,可为之前定义的菜单项名.
depends on HOTPLUG
复制代码
表示此菜单项显示与否取决于另外一个菜单项HOTPLUG ,只有当菜单项HOTPLUG这个菜单项有效显示,当前菜单项才会显示。
config MODULES
bool "Enable loadable module support"
config MODVERSIONS
bool "Set version information on all module symbols"
depends on MODULES
comment "module support disabled"
depends on !MODULES
复制代码
菜单项MODVERSIONS的显示与否取决于菜单项MODULES。这种信赖关系常用在子菜单项中。
2.3.4 选择
choice
选择项
..
endchoice
复制代码
2.3.5 提示
comment "提示信息字符串"
comment选项
复制代码
2.3.6 帮助
help/---help--- <字符串>
复制代码
例如:
config EXTRA_FIRMWARE_DIR
string "Firmware blobs root directory"
depends on EXTRA_FIRMWARE != ""
default "firmware"
help
This option controls the directory in which the kernel build system
looks for the firmware files listed in the EXTRA_FIRMWARE option.
The default is the firmware/ directory in the kernel source tree,
but by changing this option you can point it elsewhere, such as
the /lib/firmware/ directory or another separate directory
containing firmware files.
复制代码
help相当于注释一样,在给编辑Kconfig文件的人看的,这样可以保持其可读性.
3 举例
# drivers/Kconfig
menu "Device Drivers"
source "drivers/base/Kconfig"
source "drivers/connector/Kconfig"
source "drivers/mtd/Kconfig"
...
endmenu
复制代码
其对应的make menuconfig界面如下图所示:
source "drivers/base/Kconfig"中的Kconfig内容如下:即对应着上图中的第一项"Generic Driver Option"的子菜单内容:
这里不再列出来!
显示效果如下图所示:
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.29
# Thu Dec 15 21:15:25 2011
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
# CONFIG_GENERIC_GPIO is not set
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_MMU=y
# CONFIG_NO_IOPORT is not set
CONFIG_GENERIC_HARDIRQS=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
复制代码
每一个CONFIG_xxx记录着之前Kconfig文件内的菜单项的值.
Kconfig文件结构(图文)简介相关推荐
- 增值类短信业务图文简介
以前一提到短信(Short Message),人们会想到"拇指族(在社交移动APP诞生前,专指用手机高频发短信的一个群体)"."拜年短信".现在再提到短信,人们 ...
- .NET 使用 RabbitMQ 图文简介
前言 最近项目要使用RabbitMQ,园里里面已经有很多优秀的文章,Rabbitmq官网也有.net实例.这里我尝试下图文并茂之形式记录下使用的过程. 安装 RabbitMQ是建立在erlang OT ...
- android 动画开源框架,图文简介非常炫酷的Android开源框架之UI框架
架构,其又名软件架构,是关于软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计.而软件架构(software architecture)是一系列相关的抽象模式,其是用来指导大型软件系统各 ...
- 游戏的类型图文简介-让你知道什么是RPG ACT AVG FPS等等
游戏,大家并不陌生,可是你知道你玩的游戏是什么类型吗?游戏有多少分类吗?下面就给大家简单介绍一下,普及一下知识.(来自 我爱水煮鱼) RPG=Role-playing Game:角色扮演游戏 由玩家扮 ...
- Kconfig 学习
结合RT-Thread的qemu-vexpress-a9讲讲Kconfig文件和Kconfig语法 1.简介 RT-Thread 借助 Kconfig 文件生成的配置文件 rtconfig.h 来配置 ...
- 微信开发从入门到精通教程大全 资料大全 java和php版本;教程文档、代码、视频 微信商城实例
一.官网 微信公众服务号申请.认证(开通支付)-微信开发图文教程 http://blog.csdn.net/wyx100/article/details/46944863 1.1 账号申请 https ...
- 开发板移植RTOS操作系统,RTOS操作系统适配开发板整理大全
文章目录 一.单片机/嵌入式有无操作系统的区别 二.操作系统时的分层架构图 三.移植FreeRTOS到小熊派开发板(STM32L431RC) 1. 硬件准备 2. 下载FreeRTOS源码 2.1. ...
- Chrome浏览器之 Postman 安装-转
Postman 是一款发送 HTTP 请求的 Chrome 插件.开发后端程序的同学可以用它来测试自己写的应用程序是否能够正常访问. 现在由于国内的网络限制, Chrome 浏览器里无法访问&quo ...
- RabbitMQ教程C#版 - 工作队列
先决条件 本教程假定RabbitMQ已经安装,并运行在localhost标准端口(5672).如果你使用不同的主机.端口或证书,则需要调整连接设置. 从哪里获得帮助 如果您在阅读本教程时遇到困难,可以 ...
最新文章
- python学习手册中文版免费下载-Python学习手册
- 学习率对神经网络的影响-乙烷,乙烯,乙炔的分子模型试验数据对比
- 使用 Fluentd 和 ElasticSearch Stack 实现 Kubernetes 的集群 Logging
- html中响应式字体怎么写,如何实现网页中字体响应式
- ORB-SLAM2 学习1
- 从Firefox控制您喜欢的音乐播放器
- SQL Server 2017 AlwaysOn AG 自动初始化(十二)
- tornado框架hello world实践
- Liferay Dynamic CSS Filter方法的研究 - 总体过程
- hash 图像检索方法汇总
- 在VB中用DAO实现数据库编程Java教程
- 拼团不成功自动退款功能php实现,壹佰万能门店 1.0.89 小程序前端+后端 【优化】拼团订单不成团自动退款 微擎模块...
- Win10不相邻的磁盘怎么合并,一学就会
- 生产者 消费者模式
- 问佛 (佛是過來人,人是未來佛)
- Android4.4r1(KitKat)源码下载地址
- Overture教程之五线谱介绍
- 论绝对式编码器是否需要执行回原点
- 【JavaScript】freecodecamp-----Slasher Flick
- python买苹果增强版