• <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

            国产精品久久久久久久| 伊人久久综合无码成人网| 午夜精品久久久久成人| 久久se这里只有精品| 久久精品亚洲精品国产欧美| Xx性欧美肥妇精品久久久久久| 色综合久久中文综合网| 色综合久久久久综合99| 精品九九久久国内精品| 久久99精品国产99久久| 久久久久人妻精品一区二区三区 | 国产精品美女久久久| 久久国产免费观看精品3| 久久精品一区二区影院| 亚洲αv久久久噜噜噜噜噜| 91精品无码久久久久久五月天 | 亚洲国产精品成人AV无码久久综合影院 | 99久久777色| 亚洲欧洲精品成人久久曰影片| 精品久久久久久国产牛牛app| 久久精品国产一区二区| 久久性生大片免费观看性| 日韩欧美亚洲综合久久影院Ds| 亚洲午夜精品久久久久久app| 国产毛片欧美毛片久久久| 久久国产亚洲高清观看| 亚洲午夜久久影院| 亚洲国产天堂久久久久久 | 久久毛片一区二区| 国产∨亚洲V天堂无码久久久| 久久激情亚洲精品无码?V| 欧美大战日韩91综合一区婷婷久久青草 | 久久亚洲sm情趣捆绑调教| 久久人人爽人人爽人人片AV东京热| 久久成人国产精品一区二区| 日本三级久久网| 91精品国产91久久久久久青草| 2020久久精品国产免费| 久久综合综合久久97色| 性做久久久久久久久老女人| 国产精品久久久福利|