ubuntu12.04編譯android源碼

來源:互聯網
上載者:User

1.編譯前的準備工作

  請確認以下包的版本是否OK:

  1.1 gcc4.4,而不是gcc4.6,如果是4.6,需要安裝gcc4.4,命令如下:

    sudo apt-get install gcc-4.4

    sudo apt-get install g++-4.4

    cd /usr/bin

    ls -l gcc*

    sudo mv gcc gcc.bak

    sudo ln -s gcc-4.4 gcc

    ls -l g++*

    sudo mv g++ g++.bak

    sudo ln -s g++-4.4 g++

    gcc -v

    g++ -v

  1.2 python2.5-2.7,ubuntu12.04版本,預設的python版本是2.7,所以,這個沒什麼問題

  1.3 java版本微1.6.0,而不是openJDK,前面我已經刪除了openJDK的安裝包,所以這裡應該沒有才對。

2. 編譯源碼

  按照官方的提示,依次執行如下命令:

  source build/envsetup.sh

  lunch full-eng

  make -j4

  建議:最後一條命令使用make showcommands,這樣可以顯示編譯命令,使得編譯的時候,螢幕沒有輸出的時候,不會感覺無聊。

3.編譯錯誤處理

  3.1 錯誤:You are attempting to build with the incorrect version of java.

    解決方案:sudo update-alternatives --config java,同時最好確認下javac和jar命令。

  3.2 錯誤:make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 錯誤 1
            make: *** 正在等待未完成的任務....

    解決方案:修改源碼目錄下/build/core/combo/HOST_linux-x86.mk檔案:

    將以下語句

      HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0

    修改為

      HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

  3.3 錯誤:make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libMesa_intermediates/src/glsl/linker.o] 錯誤 1

    解決方案:

    gedit external/mesa3d/src/glsl/linker.cpp      

    在標頭檔段中,添加#include <stddef.h>

  3.4 錯誤:make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/liboprofile_pp_intermediates/arrange_profiles.o]

    解決方案:確認你使用的gcc和g++的4.4版本,而不是更高的版本。

  3.5 錯誤:make: *** [out/target/common/obj/APPS/CtsVerifier_intermediates/classes-full-debug.jar]

    解決方案:sudo update-alternatives --config javac,選擇jdk1.6.0,而不是openjdk。

  3.6 錯誤:make: *** [out/target/common/obj/APPS/android.core.tests.libcore.package.com.no-core-tests-res_intermediates    /  noproguard.classes-with-local.dex] Killed

    解決方案:此問題是因為編譯android4.0需要4GB的RAM或SWAP空間,而ubuntu預設的1GB的,所以,增加swap空間即可,執行命令如下:

    sudo dd if=/dev/zero of=/boot/swapfile bs=1024 count=4194304

    sudo mkswap -v1 /boot/swapfile

    sudo swapon /boot/swapfile

    free

    sudo vi /etc/fstab

    /boot/swapfile swap swap defaults 1 1

4. 編譯成功

  4.1 編譯成功之後,會在out/target/product/generic下面看到system.img,ramdisk.img,userdata.img

  4.2 但是我編譯成功之後,在終端運行emulator命令,卻提示:

    No command 'emulator' found, did you mean:

    Command 'qemulator' from package 'qemulator' (universe)

    emulator: command not found

    解決方案:

    重新運行以下命令:

    source build/envsetup.sh

    lunch full-eng

  4.3 emulator運行

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.