虽然前文中对Makefile、Kconfig以及.config三个文件又过解释,但是在做过几个简单的例子后,对这三个文件有了更深入的理解,(本文参考了师姐的PPT)现在总结如下:
1.我们要在内核中增加程序(比如驱动程序),并且使这个驱动程序能够编译进内核,基本分为两大部分。首先我们要告诉内核“请您下次编译的时候捎带上我”,即需要我们进行内核的相关配置,这就需要对相关Makefie和Kconfig文件进行修改,以便让内核知道将要对这个新的驱动程序进行编译。而仅仅只告诉内核“我需要你编译我”还不行,更重要的是让内核真正的去“行动”,即编译内核。
2.Makefile文集是整个内核工程编译命令的集合。它根据配置情况,构造出需要编译的内核源码文件列表,然后分别编译,并把目标代码链接到一起,形成内核二进制文件。也就是说Makefile只是存储了源码文件构建目标文件的规则,具体是否按着规则去执行还要看那些配置变量。
3.我们进行make menuconfig时,会出现一个配置菜单,它是由各层Kconfig文件组成。Kconfig文件是以分布式的方式位于源码的各个子目录当中。最底层的Kconfig位于源码目录下的arch/x86/Kconfig。由此入口,使用source语句把需要的子Kconfig文件加入到上级目录的Kconfig中,以此递归下去。Kconfig文件控制配置菜单是否出现新驱动的配置选项。用户通过Kconfig文件产生的配置选项,来控制对新驱动的配置。
4.我们在配置菜单中进行的相关配置(【】,【*】,【M】),最终都会存储于.config文件当中,因此Kconfig文件跟这些配置结果并没 有直接的关系,只是提供了配置菜单中的配置选项。