• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 311, comments - 0, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

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

            對于一個程序新手而言,好的IDE是他們追捧的對象。但當(dāng)他接觸的代碼多了之后,就會逐漸發(fā)現(xiàn)IDE不夠用了,因為有好多東西用IDE是不好做的,例如自動編譯,測試,版本控制,編譯定制等。這跟政治課上的一句話有點像:資本主義開始的時候是促進生產(chǎn)力發(fā)展的,但到了后來又成了阻礙生產(chǎn)力發(fā)展的因素了。如果一個程序不能擺脫IDE的限制(不是不用,而是要有選擇的用),那么他就很難提高。要知道,IDE和makefile代表了兩種不同的思想:IDE強調(diào)的是簡化計算機與用戶的交互;而makefile體現(xiàn)的是自動化。

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

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

            一個工程中的源文件不計數(shù),其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進行更復(fù)雜的功能操作,因為 makefile就像一個Shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。

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

            Make工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關(guān)系并自動維護編譯工作。而makefile 文件需要按照某種語法進行編寫,文件中需要說明如何編譯各個源文件并連接生成可執(zhí)行文件,并要求定義源文件之間的依賴關(guān)系。makefile 文件是許多編譯器--包括 Windows NT 下的編譯器--維護編譯信息的常用方法,只是在集成開發(fā)環(huán)境中,用戶通過友好的界面修改 makefile 文件而已。

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

            android最頂層的目錄結(jié)構(gòu)如下:

            .
            |-- Makefile (全局的Makefile)
            |-- bionic (Bionic含義為仿生,這里面是一些基礎(chǔ)的庫的源代碼)
            |-- bootloader (引導(dǎo)加載器)
            |-- build (build目錄中的內(nèi)容不是目標所用的代碼,而是編譯和配置所需要的腳本和工具)
            |-- dalvik (JAVA虛擬機)
            |-- development (程序開發(fā)所需要的模板和工具)
            |-- external (目標機器使用的一些庫)
            |-- frameworks (應(yīng)用程序的框架層)
            |-- hardware (與硬件相關(guān)的庫)
            |-- kernel (Linux2.6的源代碼)
            |-- packages (Android的各種應(yīng)用程序)
            |-- prebuilt (Android在各種平臺下編譯的預(yù)置腳本)
            |-- recovery (與目標的恢復(fù)功能相關(guān))
            `-- system (Android的底層的一些庫)

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

            主要的目錄結(jié)構(gòu)如下:

            1.makefile入門

            1.1 makefile helloworld

            1.2 用makefile構(gòu)建交叉編譯環(huán)境

            1.3 makefile里面的一些技巧

            2.android makefile分析

            2.1 android shell分析

            2.2 android build下的各個makefile分析

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

             

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

            作為序的最后,大家先通過網(wǎng)絡(luò)的一些文章來了解一下andoroid的makefile。

            1.Android build system

            2.Android Building System 分析

            3.Android Build System(介紹使用)

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

            久久国产色av免费看| 久久精品成人免费看| 久久久国产视频| 国产精品一久久香蕉产线看| 国产一区二区精品久久| 亚洲国产精品无码久久九九| 国产成人久久精品一区二区三区| 久久久久黑人强伦姧人妻| 亚洲精品无码久久久久去q| 久久99久久无码毛片一区二区| 国产aⅴ激情无码久久| 国产L精品国产亚洲区久久| 亚洲AV无码久久精品成人| 久久国产精品视频| 国产韩国精品一区二区三区久久 | 久久伊人精品青青草原日本| 久久综合亚洲鲁鲁五月天| 久久国产成人精品国产成人亚洲| 精品熟女少妇a∨免费久久| 少妇熟女久久综合网色欲| 久久久受www免费人成| 国产精品伊人久久伊人电影| 国产精品禁18久久久夂久| 7777精品伊人久久久大香线蕉| 久久精品综合一区二区三区| 久久精品国产一区二区三区日韩| 伊人久久大香线蕉亚洲五月天| 亚洲国产日韩欧美综合久久| 少妇被又大又粗又爽毛片久久黑人 | 久久久高清免费视频| 丁香五月综合久久激情| 久久久精品午夜免费不卡| 91久久婷婷国产综合精品青草| 久久久久久毛片免费播放| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 久久青青草原亚洲av无码| 久久精品女人天堂AV麻| 亚洲人成网站999久久久综合 | 婷婷久久综合九色综合绿巨人| 久久激情五月丁香伊人| 亚洲欧美久久久久9999 |