虽然前文中对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文件跟这些配置结果并没 有直接的关系,只是提供了配置菜单中的配置选项。
嗯~不错,能给我解释下defconfig文件、perf_defconfig文件和Android.mk文件的用意吗?
[回复一下]
edsionte 回复:
9月 15th, 2010 at 12:11
呃。。我不知道呃。。你google一下
[回复一下]
lilanpei 回复:
9月 19th, 2010 at 10:44
呃~我就是想知道在编译Android时,Makefile文件和Android.mk文件在编译时各起什么作用?有什么联系?
[回复一下]
edsionte 回复:
9月 23rd, 2010 at 00:28
@lilanpei, Makefile是里面是编译规则,向内核说明需要编译那些文件,如何编译。
[回复一下]
.mk一般是被其它Makefile包含吧
[回复一下]
Kconfig文件跟这些配置结果并没 有直接的关系,只是提供了配置菜单中的配置选项
这句解读 太赞了 关系理清了。
[回复一下]
dx 回复:
2月 13th, 2015 at 13:19
@lilanpei, perf_defconfig 在make help中应该能查到,用于生成特定的.config文件
[回复一下]