2.1 KBuild体系
从Linux内核2.6开始,Linux内核的编译采用Kbuild系统,这和过去的编译系统有很大的不同,尤其对于Linux内核模块的编译。在新的系统下,Linux编译系统会两次扫描Linux的Makefile:首先编译系统会读取Linux内核顶层的Makefile,然后根据读到的内容第二次读取Kbuild的Makefile来编译Linux内核。
Kbuild是建立在GUN make机制上的一种编译体系,理解KBuild体系,首先要理解GUN make,这也就是为什么要在前一节大谈特谈Makefile预备知识的原因。
那么Linux内核的KBuild体系中用到的Makefile分为5个部分:
(1)顶层Makefile
Kernel Makefile位于Linux内核源代码的顶层目录,也叫 Top Makefile。它主要用于指定编译Linux Kernel目标文件(vmlinux)和模块(module)。这编译内核或模块是,这个文件会被首先读取,并根据读到的内容配置编译环境变量。对于内核或驱动开发人员来说,这个文件几乎不用任何修改。
(2).config
内核配置文件,当配置完menuconfig以后,就会在主目录下生成一个.config文件,我们再来看看这个文件的部分内容:
……
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK