Linux内核的编译主要过程:配置、编译、安装。
配置主要由Kconfig
提供图形界面完成
编译主要基于Kbuild
编译系统,执行make
完成编译
(资料图)
安装主要也是基于Kbuild
提供的脚本,然后执行make
完成安装
Kconfig
Kconfig
用于内核的配置,make menuconfig
显示的菜单就来自Kconfig
。
make menuconfig
的菜单包括了多层,每层都是各个目录下对应的Kconfig
产生的,选择好配置后,配置结果会被保存到.config
文件中。
执行Makefile
时,Makefile
就会根据.config
的结果来实现内核的编译。
Kconfig语法
Kbuild
Kbuild
即Kernel build
,是内核的一个编译系统。
简单来说,Kbuild
是对Makefile
语法功能的扩展。
例如,kbuild
定义了很多有用的变量如obj-m`` obj-y
,-objs
等等,用户只要为这些变量赋值,kbuild
会自动把代码编译到内核或者编译成模块。
Linux
内核使用kbuild
编译时,会扫描两次Linux
的Makefile
:首先读取顶层的Makefile
文件,然后根据读取到的内容第二次读取kbuild的Makefile
文件来编译Linux
内核。
内核的Makefile
包括五部分:
【文章福利】小编推荐自己的Linux内核技术交流群:【749907784】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!(含视频教程、电子书、实战项目及代码)
Makefile
顶层的Makefile
是编译的入口,下面分析一下顶层Makefile
文件。
顶层Makefile
会向各子目录的Makefile
传递一些信息,有些变量,例如vmlinux-dirs
,不仅在顶层Makefile
中定义并且赋值,而且在arch/*/Makefile
还作了扩充。
原文作者:嵌入式Linux充电站