Android源碼編譯環境及常見編譯錯誤整理

1.安裝Ubuntu 10.04LTS
     可選擇使用ubuntu版本安裝,目前ubuntu最新版本爲13.04,最新的LTS版本12.04,但我這裏使用10.04LTS。有喜歡使用中文的朋友,可以安裝上中文補丁。

安裝中文的方法是:系統-系統管理-語言支持-添加或刪除語言-在彈出的對話框列表中選擇中文Chinese(simple)-下載中文補丁,之後安裝完成-在語言列表中選擇中文,並應用到整個系統-重啓電腦,ok了。


2.安裝Python

3.安裝JDK(一般建議安裝1.6也即java6)
     更新軟件庫:
     sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
     sudo apt-get update
     下載JDK:
     使用新立得軟件包管理器下載 sun-java6-jdk或執行命令:sudo apt-get install sun-java6-jdk
     修改當前使用的JDK版本:sudo update-alternatives --config java

4.安裝所需的組件
 
     執行命令:sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

     64位還需要安裝以下組件
     執行命令:sudo apt-get install gcc-multilib g++-multilib libc6-i386 libc6-dev-i386

5.安裝幾個必須庫
     進入新立得軟件包管理器勾選lib32z1-dev、zlib-bin並安裝。

6.Android編譯需要安裝mtd-utils(該程序不能升級,使用指定版本mtd-utils_20090606-1_amd64.deb)
     使用強制安裝方式:sudo dpkg -i 文件名
     此組件是用來創建UBI文件系統的。

7.安裝GCC編譯器

8.安裝交叉編譯工具arm-linux-gcc(PAO的默認配置爲源碼放在主文件夾的project下,arm-linux-gcc放在project的tools下)
     A.解壓arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz,執行命令:
        tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz –C home/administrator/project/tools/
        cp -r home/administrator/project/tools/opt/FriendlyARM/toolschain/4.5.1 /home/administrator/project/tools/arm-linux-4.5.1/
        rm -rf home/administrator/project/tools/opt
     B.設置環境變量(多個變量時用“:”分格):
            sudo gedit /etc/profile
            在最後添加:PATH=$PATH:/home/administrator/project/tools/arm-linux-4.5.1/bin
     C.重新登錄後運行:arm-linux-gcc --v 測試是否安裝成功。


以下是一些常見的錯誤:
    現把這些問題和解決方法羅列出來。

錯誤:
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 錯誤 1

解決:
  sudo apt-get install libc6-dev-i386

錯誤:
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] error 1

解決:
  sudo apt-get install g++-multilib

錯誤:
external/clearsilver/cgi/cgi.c:22: fatal error: zlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_cgi_intermediates/cgi.o] Error 1

解決:
sudo apt-get install zlib1g-dev

錯誤:
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1

解決:
sudo apt-get install lib32z1-dev

錯誤:
bison -d  -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
/bin/bash: bison: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127

解決:
sudo apt-get install bison

錯誤:
Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127

解決:
sudo apt-get install flex

錯誤:
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1

解決:
sudo apt-get install lib32ncurses5-dev

錯誤:
prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55: fatal error: X11/Xlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/android/main-common.o] Error 1

解決:
sudo apt-get install libx11-dev

錯誤:
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 96.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h'

解決:
sudo apt-get install gperf

錯誤:
build/core/java.mk:9: *** bin: Target java module does not define any source or resource files. Stop.

解決:

刪除frameworks文件夾下面的bin文件夾,通常這個文件夾是導入eclipse時創建的。


錯誤:

/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: Permission denied
/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: Permission denied
/bin/bash: build/core/find-jdk-tools-jar.sh: Permission denied
/bin/bash: build/tools/findleaves.py: Permission denied
/bin/bash: build/tools/findleaves.py: Permission denied  
Checking API: checkapi-last
/bin/bash: out/host/linux-x86/bin/apicheck: Permission denied

解決:使用chmod增加相應的權限


cannot find -lXXX
         所有編譯過程中遇到的類似這樣的錯誤,都是缺少libXXX這樣的庫,解決方法就是:
首先:利用命令:apt-cache search XXX 進行庫搜索
然後:找那些libXXX-dev這樣的庫進行安裝,命令就是:sudo apt-get install libXXX-dev
最後:繼續執行make


說明:部分資料來源於互聯網

http://abc20899.iteye.com/blog/1158637

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章