Android系統build/core下.mk檔案分析

來源:互聯網
上載者:User

Android編譯系統的架構:

        
分析Android編譯系統,你會發現,Android編譯系統完成的並不僅僅是對目標(主機)系統二進位檔案、java應用程式的編譯、連結、打包等,而且還有包括產生各種依賴關係、確保某個模組的修改引起相依賴的檔案的重新編譯連結,甚至還包括目標檔案系統的產生,設定檔的產生等,因此Android編譯系統具有支援多架構(linux-x86、windows、arm等)、多語言(彙編、C、C++、Java等)、多目標、多編譯方式。這些目標和結構決定其架構也很重要。

        
Android編譯系統集中於build/core下,幾個很重要的*.mk檔案如下:

        
main.mk(主控Makefile)

        
base_rules.mk(對一些Makefile的變數規則化)

        
config.mk(關於編譯參數、編譯命令的一些配置)

        
definations.mk(定義了很多編譯系統中用到的宏,相當於函數庫)

        
Makefile(這個Makefile特指build/core下的Makefile,此檔案主要控制產生system.img,ramdisk.img,userdata.img,以及recorvery image,sdk等)

        
Binary.mk(控制如何產生目標檔案)

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.