Linux kconfig语法详解


介绍

------------

配置数据库是组织在一个树结构里面的配置选项的集合。

+- 代码成熟级别选项

|  +- 对于开发和/或不完整的代码/驱动 的提示

+-通用配置

|  +- 网络支持

|  +- System V 进程通信机制

|  +- BSD 程序计数器

|  +- Sysctl支持

+-可装载模块支持

|  +- 使能可装载模块支持

|     +- 在所有模块标记上设置版本信息

|     +- 内核模块装载

+-...

每个入口都有它的依赖。这些依赖性用来决定入口的是否可见。只有当父入口是可见的,它的子入口才能是可见的。

菜单入口

------------

大多数入口在Kconfig文件中都定义了一个配置选项;所有其它的入口都用来组织这些配置选项。一个典型的配置选项是这样定义的:

config MODVERSIONS

bool"Set version information on all module symbols"

dependson MODULES

help

Usually, modules have to be recompiledwhenever you switch to a new

kernel. ...

每一行都以一个关键字开头,并且后面可以跟多个参数。一个新的配置入口是以“config”关键字开始的。接下来的数行是对这个配置选项的属性定义。属性可以是类型、输入提示、依赖项、帮助文档以及默认值。一个配置选项用相同的名字定义多次,但是每次定义的输入提示和类型都必须不一样。

菜单属性

--------------

一个菜单入口可以有多个属性。不是所有的属性在任何地方都会有效。

- 类型定义:"bool"/"tristate"/"string"/"hex"/"int"

每个配置选项必须都有一个类型。在上面这几个类型中其实只有两个基本类型:tirstate和string;其它的类型都是基于这两种属性的。类型定义的时候可以接受一个输入提示(也可以单独使用一个提示属性),所以下面的这两个例子是等价的:

bool"Networking support"

bool

prompt"Networking support"

- 输入提示:"prompt" <prompt> ["if" <expr>]

每个菜单入口最多只能有一个展示给用户看的输入提示,可以使用“if”来表示输入提示的依赖性,这个依赖性是可选的。

- 默认值: "default" <expr> ["if" <expr> ]

一个配置选项可以有任意多个默认值。如果存在多个默认值,只有第一个定义的默认值才是有效的。默认值可以定义在菜单入口的任何位置。这就意味着默认值可以在配置选项的其它地方再定义或者被之前的默认值定义给覆盖。

只有当用户没有给配置标记赋值的时候(通过上面的输入提示),才会使用这个默认值来进行赋值。如果一个用户提示是可见的,那样用户就能看到默认值,并且可以输入一个值将默认值覆盖。

与输入提示一样,可以使用“if”来表示默认值的依赖性,这个依赖性是可选的。

- 类型定义+ 默认值:

"def_bool"/"def_tristate"<expr> ["if" <expr>]

这是一个类型定义加上一个默认值的速记符号。

如果使用依赖性,可以使用“if”来表示

- 依赖项: "depends on" <expr>

依赖项给菜单入口定义了一个依赖规则。如果有多个依赖项,它们将使用‘&&’符号进行连接。依赖性对菜单入口中的其它选项都有效(这个菜单如果也接受一个“if”表达式),所以下面这两个例子是等价的:

bool"foo" if BAR

default y if BAR

depends on BAR

bool "foo"

default y

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容