一、Linux内核源码结构
Linux内核文件数目很多,除去其他CPU架构的代码,支持S3C2440、S3C2410这两款芯片的完整内核文件就有1万多个,这些文件的组织结构并不复杂,都是位于顶层目录下的17个子目录。个子目录功能如下图,最后两个目录不包含内核代码:
我们常需要用到的是 arch 目录,driver目录,kernel目录。
二、Linux的Makefile分析
在编译内核时,内核中的哪些文件将被编译?它们是怎样被编译的?它们链接时的顺序如何确定?哪个文件在最前面?哪些文件或函数先执行?这些都是通过makefile来管理的,Makefile最主要的三个作用:
1.决定编译哪些文件
2.怎样编译这些文件
3.怎样链接这些文件,它们的顺序是怎样的?
内核源码中Makefile文件分为以下5类:
由于能力时间有限,以后再来具体分析各级Makefile的实现。这是一个很庞大的工程,想要学习可以看下内核文档Documentation/kbuild/makefiles.txt,这个文件对Makefile讲解的非常清楚透彻,可惜是30页左右英文档,可能要花上好长一段时间来学习。
下面简要总结一下Makefile的功能:
1.顶层Makefile决定内核根目录下哪些子目录被编译进内核
2.arch/$(ARCH)/Makefile 决定arch/$(