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應該屬於社會公民了,他決定本身該如何去作

相關文章
相關標籤/搜索