Android中m、mm、mmm、mma、mmma的區別


m:編譯整個安卓系統

     makes from the top of the tree

mm:編譯當前目錄下的模塊,當前目錄下需要有Android.mk這個makefile文件,否則就往上找最近的Android.mk文件。

         builds all of the moudles in the current directory

         mma:當前目錄新增或刪除文件后,可以用mma重新編譯。

mmm:編譯指定路徑下的模塊,指定的路徑下面需要有android.mk這個makefile文件

             builds all of the moudles in the supplies directory

            mmma:指定目錄下新增或刪除文件后,可以用mmma重新編譯。

            mmm命令 的編譯過程:

            build/core/main.mk(是Android編譯系統的入口文件)

           ->build/core/config.mk(會定好編譯類型和目標文件)

                                                      ->build/core/definitions.mk(定義在編譯過程中用到的宏)

                                                      ->ONE_SHOT_MAKEFILE->build/core/package.mk(編譯Apk庫文件)

                                                                                                 ->build/core/java_library.mk(編譯Java庫文件)

                                                                                                 ->build/core/static_java_library.mk(編譯Java靜態庫文件)

                                                                                                 ->build/core/shared_library.mk->build/core/dynamic_library.mk->build/core/binary.mk->build/core/base_rules.mk

                                                                                                                                                                                         ( 計算一些基本變量的值,並創建一些基本的依賴規則)

                                                                                                                                                  ->build/core/static_library.mk(編譯.a靜態庫文件)

                                                                                                                                                  ->build/core/executable.mk(編譯可執行文件)

                                                                                                                                                  ->build/core/prebuilt.mk(編譯已經預編譯好的第三方庫文件)

                                                                                                 ->build/core/Makfile(有system.img、boot.img、recovery.img等鏡像文件生成規則)

             環境變量ONE_SHOT_MAKEFILE中存放要編譯模塊的Android.mk的文件路徑,如果環境變量值為空,表示執行的是m或者make命令,會對Android源代碼中的所有模塊進行編譯。

 

mm、mmm是類似的,都是用來編譯某些模塊。

使用這些編譯命令,首先需要在Android根目錄下配置環境

[plain]  view plain  copy
 
 
  1. #source  build/envsetup.sh         要確保當前根目錄下有envsetup.sh腳本文件  
[plain]  view plain  copy
 
 
  1. #choose...                         對環境的選擇  
[plain]  view plain  copy
 
 
  1. #cd (要編譯模塊所在的目錄)  
[plain]  view plain  copy
 
 
  1. #mm(mma、mmm、mmma) -B -j2  2>&1    開始編譯模塊  
[plain]  view plain  copy
 
 
  1. 注:-B表示編譯模塊的所有文件,-j2表示編譯的時候開啟兩個線程,2>&1表示將錯誤切換到輸出(輸入為0,輸出為1,錯誤為2)。    
 
  1.  envsetup.sh腳本文件里包含vendorsetup.sh 、lunch、 m mm mmm的定義  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM