背景
移植4g模块的时候,看到文档中有添加驱动到内核的步骤,于是趁着这个机会,展开有关的学习。
了解更多可以访问:《Kconfig语法简介》
Target :hi3531d
Linux :Linux-3.18
有关概念:
内核源码编译过程:
-
从顶层目录开始,遍历每个源码目录(或配置指定的源码目录)中的Makefile;
-
每个目录的Makefile 会根据Kconfig来定制要编译对象 回到顶层目录的Makeifle执行编译。那么,也就有:
.config ---> (源码顶层目录下)保存选择结果
Kconfig ---> (每个源码目录下)提供选项
Makefile---> (每个源码目录下)根据.config中的内容来告知编译系统如何编译
步骤:
在自己喜欢的位置创建一个目录(前提是这个目录下面存在Kconfig以及Makefile)
为了方便演示,我们这里在 drivers 目录下面创建 demo 文件夹
进入到新建的目录下。
在新建的目录下创建Kconfig文件
config DEMO
bool "Test driver"
help
This is a demo for test
在新建的目录下创建Makefile文件
当CONFIG_选项名=y时,表示对应目录下的xxx.c将被编译进内核;当CONFIG_选项名=m 时对应目录下的xxx.c将被编译成模块
Obj-$(CONFIG_DEMO) += demo.o
目前的情况:
修改与新建目录同级Kconfig
添加一行,为的是:将新建目录下的Kconfig文件添加到配置搜寻目录中
source "drivers/demo/Kconfig"
修改与新建目录同级Makefile
添加一行,为的是使用配置项来管理是否需要编译demo目录下的代码
obj-$(CONFIG_DEMO) += demo/
目前的情况: