1、Kconfig文件的作用
首先,内核编译代码的大概过程如下:
遍历每个源码目录Makefile => 根据每个目录的Kconfig来配置Makefile,定制要编译的对象 => 回到顶层目录的Makefile执行编译。
因此各个文件的作用如下:
- Kconfig
每个源码目录下提供选项 - .config
源码顶层目录下保存选择结果 - Makefile
每个源码目录下根据.config中的内容来告知编译系统如何编译
Kconfig文件配置了哪些文件需要编译,哪些文件不用编译。
2、语法解析
语法可以参考源码中的文档说明,路径如下:
Documentation/kbuild/kconfig-language.txt
自己目前用的比较多的如下:
config AUTO_DETECT_ACCELEROMETER
bool "AUTO DETECT ACCELEROMETER Sensor"
depends on SENSOR_SUPPORT
help
one load to support different accelerometer sensor.
If this option is set, multiple accelerometer driver
can be configured at the same time, but only one
can be probed.
depend on:表示当前的AUTO_DETECT_ACCELEROMETER配置依赖于SENSOR_SUPPORT配置。
3、注意点
- Kconfig文件中和Makefile文件中定义的名字不同,缺少一个config前缀:
// Kconfig文件
config CUSTOM_KERNEL_SIGNIFICANT_MOTION_SENSOR
bool "open significant motion"
help
Kernel space sigificant motion sensor driver.
// Makefile文件
obj-$(CONFIG_CUSTOM_KERNEL_SIGNIFICANT_MOTION_SENSOR) += step_counter/
- 在上一层目录的Kconfig文件中添加配置
source "drivers/misc/mediatek/sensors-1.0/step_counter/Kconfig"
4、遇到的问题
Kconfig文件中定义的宏控和config文件中定义的不一致,导致不能编译生成指定的文件。
参考资料
1.https://blog.csdn/jianwen_hi/article/details/53398141
更多推荐
Kconfig文件的用途及解析
发布评论