近期在進行android源碼編譯,環境搭建神碼痛苦不堪,在編譯過程中更是錯誤不斷,想想在windows環境下習慣了,切換到ubuntu上來操作,真真到一時難以適應。
各位看官,下面問題是出現在-------環境已經正確配置完成,執行make時出現的錯誤以及解決辦法。希望能對大家有所幫助。
首先說一下,目前環境搭建/系統版本/android版本,
環境搭建 :大家可以按照官網, source.android.com ,執行。
系統版本: ubuntu 12.10 32位系統
android版本 4.0.1r1
jdk:1.6(這里大家注意,編譯android )
注:1.因為我安裝系統語言位中文,如果大家到系統版本位英文 提示錯誤信息中 “錯誤” 會為“error”。
2.以下說多少行,可能會不一樣,可以通過查找定位。我使用的grepedit,.
一. make: *** [out/host/linux-x86/obj/EXECUTABLES/emugen_intermediates/main.o] 錯誤 1
或者 make: *** [out/host/linux-x86/obj/EXECUTABLES/emugen_intermediates/main.o] error 1
解決辦法: 需要在 development/tools/emulator/opengl/host/tools/emugen/main.cpp
在聲明中增加一條頭文件聲明
#include <getopt.h>
二. frameworks/base/include/utils/KeyedVector.h:193:31: 錯誤: ‘indexOfKey’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
或者 frameworks/base/include/utils/KeyedVector.h:193:31: error: ‘indexOfKey’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
解決辦法:在 development/tools/emulator/opengl/Android.mk
增加 '-fpermissive' 到25行:
EMUGL_COMMON_CFLAGS := -DWITH_GLES2 -fpermissive
三. make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] 錯誤 1
或者 make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] Error 1
解決辦法: frameworks/base/tools/aapt/Android.mk
四. make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 錯誤 1
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] error 1
解決辦法:系版本高,在配置環境的時候,gcc安裝了高到版本,所以gcc版本太高導致,需要降低gcc版本級別。
ubuntu 32bit系統下安裝gcc 4.4的最好方法是僅用以下兩條命令,不需要其它命令,否則編譯時可能會出錯。
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4
操作過程見:
gcc降級:
sudo rm -rf /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
gcc -v
g++降級
sudo rm -rf /usr/bin/g++
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
g++ -v
演示過程:

1 cxl@cxl:/usr/lib$ gcc -v 2 使用內建 specs。 3 COLLECT_GCC=gcc 4 COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.7/lto-wrapper 5 目標:i686-linux-gnu 6 配置為:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu 7 線程模型:posix 8 gcc 版本 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) 9 cxl@cxl:/usr/lib$ ls -l gcc 10 總用量 8 11 drwxr-xr-x 3 root root 4096 4月 1 21:25 i586-mingw32msvc 12 drwxr-xr-x 4 root root 4096 4月 2 10:46 i686-linux-gnu 13 cxl@cxl:/usr/lib$ sudo mv gcc gcc.bak 14 cxl@cxl:/usr/lib$ sudo ln -s gcc-4.4 gcc 15 cxl@cxl:/usr/lib$ gcc -v 16 使用內建 specs。 17 COLLECT_GCC=gcc 18 目標:i686-linux-gnu 19 配置為:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu 20 線程模型:posix 21 gcc 版本 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) 22 cxl@cxl:/usr/lib$ clear 23 24 cxl@cxl:/usr/lib$ ls -l gcc* 25 lrwxrwxrwx 1 root root 7 4月 2 11:05 gcc -> gcc-4.4 26 27 gcc.bak: 28 總用量 8 29 drwxr-xr-x 3 root root 4096 4月 1 21:25 i586-mingw32msvc 30 drwxr-xr-x 4 root root 4096 4月 2 10:46 i686-linux-gnu 31 cxl@cxl:/usr/lib$ gcc -v 32 使用內建 specs。 33 COLLECT_GCC=gcc 34 目標:i686-linux-gnu 35 配置為:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu 36 線程模型:posix 37 gcc 版本 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) 38 cxl@cxl:/usr/lib$ rm -rf /usr/bin/gcc 39 rm: 無法刪除"/usr/bin/gcc": 權限不夠 40 cxl@cxl:/usr/lib$ sudo rm -rf /usr/bin/gcc 41 cxl@cxl:/usr/lib$ sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc 42 cxl@cxl:/usr/lib$ gcc -v 43 Using built-in specs. 44 Target: i686-linux-gnu 45 Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.7-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu 46 Thread model: posix 47 gcc version 4.4.7 (Ubuntu/Linaro 4.4.7-2ubuntu1)

cxl@cxl:/usr/lib$ g++ -v 使用內建 specs。 COLLECT_GCC=g++ 目標:i686-linux-gnu 配置為:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu 線程模型:posix gcc 版本 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) cxl@cxl:/usr/lib$ sudo rm -rf /usr/bin/g++ cxl@cxl:/usr/lib$ sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++ cxl@cxl:/usr/lib$ g++ -v Using built-in specs. Target: i686-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.7-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu Thread model: posix gcc version 4.4.7 (Ubuntu/Linaro 4.4.7-2ubuntu1)
五.make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/AssetManager.o] 錯誤 1
解決辦法:cd external/srec
wget " https://github.com/CyanogenMod/android_external_srec/commit/4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff"
patch -p1 < 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
rm -f 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
cd ../..
libdigest-md5-file-perl
或者 make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] error 1
解決辦法: