android makefile(android.mk)分析(序)

來源:互聯網
上載者:User

 

android是什麼就不用說了,android自從開源以來,就受到很多人的追捧。當然,一部人追捧它是因為它是Google開發的。對一個程式員來說,一個系統值不值得追捧得要拿代碼來說話。我這裡並不打算分析android的代碼,而是android的makefile,我想通過分析andorid的makefile來告訴大家如何寫makefile。

對於一個程式新手而言,好的IDE是他們追捧的對象。但當他接觸的代碼多了之後,就會逐漸發現IDE不夠用了,因為有好多東西用IDE是不好做的,例如自動編譯,測試,版本控制,編譯定製等。這跟政治課上的一句話有點像:資本主義開始的時候是促進生產力發展的,但到了後來又成了阻礙生產力發展的因素了。如果一個程式不能擺脫IDE的限制(不是不用,而是要有選擇的用),那麼他就很難提高。要知道,IDE和makefile代表了兩種不同的思想:IDE根據強調的是簡化電腦與使用者的互動;而makefile體現的是自動化。

對於一個一開始就接觸linux的人來說,makefile可能是比較容易學的(熟能生巧),對於一個一開始就接觸Windows的人來說,makefile就不太好學,這主要是應該很多時候會不自覺地去用Visual Studio(Visual Studio是個好東西,特別是它的調試)。不知道大叫有沒有這個的感覺:一個人如果先接觸c,再接觸java會比較容易點;如果一個人先接觸java,再接觸c,就會比較反感c。

這個先引用一下百度百科對makefile的一些描述:

一個工程中的源檔案不計數,其按類型、功能、模組分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為 makefile就像一個Shell指令碼一樣,其中也可以執行作業系統的命令。

makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大多數的IDE都有這個命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可見,makefile都成為了一種在工程方面的編譯方法。

Make工具最主要也是最基本的功能就是通過makefile檔案來描述來源程式之間的相互關係並自動維護編譯工作。而makefile 檔案需要按照某種文法進行編寫,檔案中需要說明如何編譯各個源檔案並串連產生可執行檔,並要求定義源檔案之間的依賴關係。makefile 檔案是許多編譯器--包括 Windows NT 下的編譯器--維護編譯資訊的常用方法,只是在整合式開發環境中,使用者通過友好的介面修改 makefile 檔案而已。

對於android而言,android使用的是GNU的make,因此它的makefile格式也是GNU的makefile格式。現在網路上關於makefile最好的文檔就是陳皓的《跟我一起寫makefile》,這份文檔對makefile進行了詳細的介紹,因此推薦大家先看這份文檔(電子版可以到http://pipi.googlecode.com/files/How%20to%20Write%20makefile.pdf下載,陳皓的blog在http://blog.csdn.net/haoel)。

android最頂層的目錄結構如下:

.
|-- Makefile        (全域的Makefile)
|-- bionic          (Bionic含義為仿生,這裡面是一些基礎的庫的原始碼)
|-- bootloader      (引導載入器)
|-- build           (build目錄中的內容不是目標所用的代碼,而是編譯和配置所需要的指令碼和工具)
|-- dalvik          (JAVA虛擬機器)
|-- development     (程式開發所需要的模板和工具)
|-- external        (目標機器使用的一些庫)
|-- frameworks      (應用程式的架構層)
|-- hardware        (與硬體相關的庫)
|-- kernel          (Linux2.6的原始碼)
|-- packages        (Android的各種應用程式)
|-- prebuilt        (Android在各種平台下編譯的預置指令碼)
|-- recovery        (與目標的恢複功能相關)
`-- system          (Android的底層的一些庫)

本文將要分析的是build目錄下的makefile和shell檔案,android的代碼是1.5的版本。

主要的目錄結構如下:

1.makefile入門

    1.1 makefile helloworld

    1.2 用makefile構建交叉編譯環境

    1.3 makefile裡面的一些技巧

2.android makefile分析

    2.1 android shell分析

    2.2 android build下的各個makefile分析

3. android其他目錄的android.mk分析

由於最近研究生要畢業了,得找工作了,所以可能分析有時候會間斷一兩天,望大家能夠諒解。

作為序的最後,大家先通過網路的一些文章來瞭解一下andoroid的makefile。

1.Android build system

2.Android Building System 分析

3.Android Build System(介紹使用)

4. http://source.android.com/porting/build_cookbook.html

轉載 android makefile(android.mk)分析(序) - 徐凡的blog - CSDN部落格

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.