配置
三种方法:
- make menuconfig(成千上万配置项要配置,很复杂,不可取)
- 使用默认的配置,在此基础上修改。(但现在不知道默认的配置有哪些。可以搜索下)
- 使用厂家提供的配置文件。(将厂家提供的 config厂家直接复制一份为. config,然后再make menuconfig
配置过程是剪裁模块,将不需要的模块从编译列表中去除,加入需要的模块。
配置成功后会生成.config文件,该文件用于编译时来选择需要编译的模块。
编译
编译时会加载.config文件来选择编译模块。
make uImage
当编译目标是uImage时,uImage不在顶层的 Makefile中,在
arch/arm/Makefile
中定义了这个目标我们是在顶层目录make uImage
的,则可知顶层 Makefile会包含arch/arm/ Makefile
uImage是一个头部+真正的内核。uImage依赖于 vmlinux ,所以制作这个uImage时需要编译出真正的内核。这个真正的内核显然就是 vmlinux
我们分析内核配置编译过程的目的就是找出启动文件和链接文件,所以需要查看makefile的编译选项,即根据找出的编译目标vmlinux来确定编译选项,我们可以查看编译过程的打印信息直接分析编译选项:
所以由编译选项的值:
链接脚本:arch/arm/kernel/vmlinux.lds
,其中vmlinux.lds
是由vmlinux.lid.S
生成
启动文件:·arch/arm/kernel/head. o(head.S)
通过分析内核编译过程的编译选项的值编译uImage目标时需要的链接脚本和启动文件,从而分析内核的启动过程