大家好,又见面了,我是你们的朋友全栈君。
uboot 或 Linux 内核可以通过输入“make menuconfig”来打开图形化配置界面, menuconfig是一套图形化的配置工具,需要 ncurses 库支持。 ncurses 库提供了一系列的 API 函数供调用者生成基于文本的图形界面
menuconfig 重点会用到两个文件: .config 和 Kconfig, .config 文件保存着 uboot或 Linux 内核 的配置项,使用 menuconfig 配置完 uboot或 Linux 内核 以后肯定要更新.config 文件。 Kconfig文件是图形界面的描述文件,也就是描述界面应该有什么内容,很多目录下都会有 Kconfig 文件。
关于 Kconfig的详细语法介绍,可以参考 linux 内核源码(不知为何 uboot 源码中没有这个文件)中的文件Documentation/kbuild/kconfig-language.txt
一、Kconfig 语法简介
1.1、 mainmenu
顾名思义 mainmenu 就是主菜单,也就是输入“make menuconfig”以后打开的默认界面
1.2、调用其他目录下的 Kconfig 文件
和 makefile 一样, Kconfig 也可以调用其他子目录中的 Kconfig 文件,调用方法如下:
source “xxx/Kconfig” //xxx 为具体的目录名,相对路径
1.3、 menu/endmenu 条目
menu 用于生成菜单, endmenu 就是菜单结束标志,这两个一般是成对出现的。
1.4、 config 条目
config 条目就是具体配置项。以 config 关键字开头,后面跟着的就是配置项名字。.config 文件中的“CONFIG_xxx” (xxx 就是具体的配置项名字)就是 Kconfig 文件中 config 关键字后面的配置项名字加上“CONFIG_”前缀。
config 关键字下面的这几行是配置项属性,属性里面描述了配置项的类型、输入提示、依赖关系、帮助信息和默认值等。
1.5、 depends on 和 select
“depends on”说明“A”项依赖于“B”,也就是说“B”被选中以后“ A”才能被选中
1.6、 choice/endchoice
choice/endchoice 代码段定义了一组可选择项,将多个类似的配置项组合在一起,供用户单选或者多选。
1.7、 menuconfig
menuconfig 和 menu 很类似,但是 menuconfig 是个带选项的菜单
1.8、 comment
comment 用 于 注 释 , 也 就 是 在 图 形 化 界 面 中 显 示 一 行 注 释
1.9、 source
source 用于读取另一个 Kconfig
二、添加自定义菜单
图形化配置工具的主要工作就是在.config 下面生成前缀为“CONFIG_”的变量,这些变量一般都要值,为 y, m 或 n,在 uboot 源码里面会根据这些变量来决定编译哪个文件。添加自定义菜单要求如下:
①、在主界面中添加一个名为“My test menu”,此菜单内部有一个配置项。
②、配置项为“MY_TESTCONFIG”,此配置项处于菜单“My test menu”中。
③、配置项的为变量类型为 bool,默认值为 y。
④、配置项菜单名字为“This is my test config”。
⑤、配置项的帮助内容为“This is a empty config, just for tset!”。
打开顶层 Kconfig,在最后面加入如下代码:
menu "My test menu"
config MY_TESTCONFIG
bool "This is my test config"
default y
help
This is a empty config, just for test!
endmenu # my test menu
Kconfig 文件的最终目的就是在.config 文件中生成以“CONFIG_”开头的变量。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142827.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...