Android系統編譯指令make 、mmm、mm優缺點比較

very_on發表於2018-03-08

Android 系統提供了三種指令用於編譯,他們分別為make、mmm、mm,這三個指令編譯的優缺點如下:

1. make:不帶任何引數,用於編譯整個系統,編譯時間比較長,除非是進行初次編譯否則不建議此種做法;

例如:make MediaProvider  z這種模式對應於單個模組的編譯。它的優點是:會把該模組依賴的其他模組一起跟著編譯。例如:make libmedia 就會把libmedia依賴庫全部編譯好。當然缺點也會很明顯,那就是它會搜尋整個原始碼來定位MediaProvider 模組所使用的Android.mk檔案。並且還要判斷該模組依賴的其他模組是否有修改。所以編譯時間比較長。

2. mmm  pacKages/providers/MediaProvider:該命令編譯指定目錄下的目標模組,而不編譯它所依賴其他模組。所以,若是初次編譯,採用此種模式編譯一個模組往往會報錯,錯誤的原因就在於它依賴的其他模組沒有一起編譯。

3. mm 這種編譯方式一般需要cd 進入pacKages/providers/MediaProvider目錄,然後執行mm指令。該命令會編譯當前目錄下的模組。它和mmm一樣,只編譯目標模組。mm和mmm編譯的速度都很快。

    從使用者的角度來考慮:

 1. 如果只知道目標模組的名稱,則建議使用 make  模組名  的方式編譯目標模組。例如:如果要編譯 libmedia 。則直接使用make libmedia即可,另外,初次編譯時也要採用這種方法。

2. 如果不知道目標模組的名稱,但知道目標模組所在的目錄時,則可使用mm或者mmm 命令來編譯。當然初次編譯還必須使用make命令,以後編譯就可以使用mmm或者mm了,這樣會幫助我們節約不少時間。

注意:一般的編譯方式都會採用增量編譯,即只編譯發生變化的目標檔案,但有時則需要重新編譯所有目標檔案,那麼就可以使用make 命令列的-B選項。例如:mm -B  模組名,或者mm -B、mmm -B。在mm 和 mmm內部也是呼叫make命令的,而make的-B選項將強制編譯所有的目標檔案。

相關文章