Linux内核--内核编译
内核编译
确保当前在sdk目录下
指定平台编译
芯片平台会提供SDK,SDK中会自带kernel源码
rk平台:
部分编译内核指令,在sdk主目录下执行
1 | ./build.sh kernel |
1、kernel 增加驱动代码
- 在drivers/对应目录下创建对应目录,以触摸屏为例/drivers/input/touchscreen/xxx
- 修改当前目录Makefile,使用obj 增加驱动代码目录
1
2obj-$(CONFIG_TOUCHSCREEN_xxx) += touchscreen/xxx
- 修改上面Makefile 所处目录下kconfig文件,使其配置能被kernel 读取
1 | // 如果增加驱动目录没有子kconfig 具体语法参考下面地址 |
2、修改平台配置文件
平台级编译,可能会单独提供kernel的配置文件,在执行build.sh时会先读取它们的配置文件,然后写入kernel的配置文件中,再执行编译
graph LR a(读取平台配置)-->b[写入kernel的config] b-->c[使用当前kernel配置编译] c-->d(kernel目录生成boot.img)
未指定平台
1、下载kernel源码
2、配置config 选项
1 | make menuconfig |
进入后会进到图形配置kernel信息,修改后会保存在kernel目录下.config
查看当前配置项
1 | vim .config |
3、编译
1 | make |
具体的编译过程可能因不同版本、不同平台的Linux而有所不同,另外配置需要查看Makefile。
若增加驱动代码,参考指定平台编译
指定平台编译