Android系统build/core下.mk文件分析

http://blog.csdn.net/tangy110/article/details/6288798
java

Android编译系统的架构:linux

         分析Android编译系统,你会发现,Android编译系统完成的并不单单是对目标(主机)系统二进制文件、java应用程序的编译、连接、打包等,并且还有包括生成各类依赖关系、确保某个模块的修改引发相依赖的文件的从新编译连接,甚至还包括目标文件系统的生成,配置文件的生成等,所以Android编译系统具备支持多架构(linux-x86windowsarm等)、多语言(汇编、CC++Java等)、多目标、多编译方式。这些目标和结构决定其架构也很重要。shell

         Android编译系统集中于build/core下,几个很重要的*.mk文件以下:windows

         main.mk(主控Makefile)架构

         base_rules.mk(对一些Makefile的变量规则化)函数

         config.mk(关于编译参数、编译命令的一些配置)ui

         definations.mk(定义了不少编译系统中用到的宏,至关于函数库)spa

         Makefile(这个Makefile特指build/core下的Makefile,此文件主要控制生成system.img,ramdisk.img,userdata.img,以及recorvery imagesdk等).net

         Binary.mk(控制如何生成目标文件)blog

         Clear_vars.mk(清除编译系统中用到的临时变量)

         Combo/linux-arm.mk(控制如何生成linux-arm二进制文件,包括ARM相关的编译器,编译参数等的设置)

         Copy_headers.mk(将头文件拷贝到指定目录)

         分散于各个目录下的Android.mk(控制生成局部模块的源码,名称所需头文件路径,依赖库等特殊选项)

         Build/envsetup.mk(编译环境初始化,定义一些实用的shell函数,方便编译使用)

         以上几个主要的文件,能够按照社会分工打一个比方:

         Main.mk是总统,是老大,承担了不少工做。

         Makefile是副总统,辅佐老大Main.mk

         Base_rules.mk是交警,让不规则的东西,变得规则。

         Config.mk是省长,规定了各我的民群众该如何行事

         Definations.mk是图书馆管理员

         Binary.mk应该属于村长了,规定每一个人该如何行事

         Clear_vars.mk应该属于保洁公司的工人吧

         Combo/linux-arm.mk应该属于社会公民了,他决定本身该如何去作

相关文章
相关标签/搜索