linux Kconfig 学习与总结
使用Kconfig时,需要注意的地方
1.在Kconfig中定义的配置宏,前缀都没有"CONFIG_",只有编译内核时,自动生成autoconf.h才会出现前缀。
2.如果 XX_defconfig 板卡配置文件中定义新的宏=y时,而在Kconfig并没有声明它,则内核编译出来的autoconf.h里也不会定义它的。
3.如果 XX_defconfig 板卡配置文件中没有设置 CONFIG_MODULES=y,则编译 make modules 时将会失败,而 make menuconfig 时,Kconfig中的tristate参数也会被读写为bool参数(也就是不能设置m)。
CONFIG宏变量参数
bool: 表示该CONFIG宏只能选择y(编译内核)或者n(不编译)
tristate: 表示该CONFIG宏可以设置y/m/n三种模式(tristate),m(编译为模块)
string: 表示该CONFIG宏可以设为一串字符,比如#define CONFIG_XXX "config test"
hex: 表示该CONFIG宏可以设为一个十六进制,比如#define CONFIG_XXX 0x1234
int: 表示该CONFIG宏可以设为一个整数,比如#define CONFIG_XXX 1234
常用参数
default y: 表示默认是勾上的,当然也可以写为default m或者default n
help: 帮助提示信息
depends on: 依赖项,比如 depends on XXX 表示当前宏需要 CONFIG_ XXX 宏打开的前提下,才能设置它 (注意依赖项的config参数只有bool或tristate才有效)
select : 反依赖项,和 depends on 刚好相反,比如 selecton XXX 表示当前宏如果是y或者m,则会自动设置XXX=y或者m(注意参数只有bool或tristate才有效)
choice: 会生成一个单选框,里面通过多选一方式选择config,需要注意choice中的config参数只能bool或tristate
prompt: 提示信息,如果对于choice而言,则会用来当做一个单选框入口点的标签
range : 设置用户输入的数据范围,比如 range 0 100 表示数据只能位于 0~100
menuconfig: menuconfig XXX 和 config XXX 类似,唯一不同的是该选项除了能设置 y/m/n 外,还可以实现菜单效果(能回车进入该项内部)