天天看點

ubuntu 11.10(32位系統)下編譯android源碼 make錯誤解決辦法

本文介紹在ubuntu 11.10系統下編譯android 2.3.3源碼,編譯之前請确定上兩篇文章(http://www.cnblogs.com/dwayne/archive/2011/11/16/2250732.html和http://www.cnblogs.com/dwayne/archive/2011/11/11/2245383.html)中所需的準備工作已經成功完成。編譯完成生成系統鏡像檔案,并在模拟器中運作。

準備工作完成後,開始編譯工作。下載下傳下來的源碼有5g多,如果按照我之前寫的擷取源碼的話,源碼目錄為~/android/source

一、環境設定

複制代碼

在lunch時,如果提示permission denied權限不夠的話,需要在源碼根目錄下執行,賦予目錄下所有檔案權限

這時候會lunch指令會列印出如下所示文段:

一、開始編譯

編譯過程可能會出現許多錯誤而中止,在此wayne将會把所有遇到的問題以及解決方法一一貼出來,以供以後參考。

1.q:

解決方法:cd到源碼根目錄,執行:

找到

将其修改為

然後依次修改以下四個make檔案:

将其中的

修改為

2.q:

解決方法:

修改以下語句

3.q:

如果之前的依賴包都已經安裝成功的話,此處應該是交叉編譯工具權限的問題。這個問題隻要在文章開頭lunch時執行了賦予權限指令,就應該不會遇到了。

4.q:

此處編譯錯誤是由于ubuntu 11.10采用了gcc4.6.1導緻的。

修改源碼目錄下/build/core/combo/host_linux-x86.mk檔案:

将以下語句

編譯時還有可能出現類似的錯誤,根據錯誤提示的關鍵詞比如g++錯誤、jre錯誤等,都是些細節問題,比較好解決。

經過兩小時左右的等待後,終于順利完成。編譯成功後會生成system.img等鏡像檔案,下面是編譯完成提示:

三、啟動所編譯的系統

編譯完之後會在out/target/product/generic目錄下生成system.img ramdisk.img userdata.img三個鏡像檔案。

在啟動模拟器之前,需要先為模拟器系統設定環境變量,執行gedit ~/.bashrc,新增環境變量如下:

最後,同步這些變化并啟動模拟器:

加載上我們所編譯出來的系統檔案,終于出現了期待已久的模拟器:

ubuntu 11.10(32位系統)下編譯android源碼 make錯誤解決辦法

到這裡,源碼編譯就完成了,接下來就可以進行自己的改動測試了。依然,

會遇到的問題目前是:

權限不夠遇到多次

/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 權限不夠 

/bin/bash: build/core/find-jdk-tools-jar.sh: 權限不夠 

/bin/bash: build/tools/findleaves.py: 權限不夠 

checking api: checkapi-last 

/bin/bash: out/host/linux-x86/bin/apicheck: 權限不夠

解決:

chmod a+x prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc

對所有沒有權限的檔案增加可執行權限