主题 : [已解決] 請問如何解決Android 2.3.4 編譯錯誤 复制链接 | 浏览器收藏 | 打印
级别: 圣骑士
UID: 44407
精华: 0
发帖: 386
金钱: 1945 两
威望: 389 点
综合积分: 772 分
注册时间: 2011-04-25
最后登录: 2014-08-25
楼主  发表于: 2011-08-03 13:13

 [已解決] 請問如何解決Android 2.3.4 編譯錯誤

編譯環境FC14 32bit /


一、準備工作,安裝編譯過程中需要的32位Library,需要使用root用戶權限操作安裝命令

Fedora

yum install alsa-firmware.noarch alsa-lib.i686 alsa-lib-devel.i686 alsa-tools.i686 alsa-tools-firmware.i686 audiofile-devel.i686 cups-devel.i686 dbus-devel.i686 esound-devel.i686 \
fontconfig-devel.i686 freetype.i686 freetype-devel.i686 giflib-devel.i686 hal-devel.i686 \
lcms-devel.i686 libICE-devel.i686 libjpeg-devel.i686 libpng-devel.i686 libSM-devel.i686 \
libusb-devel.i686 libX11-devel.i686 libXau-devel.i686 libXcomposite-devel.i686 \
libXcursor-devel.i686 libXext-devel.i686 libXi-devel.i686 libXinerama-devel.i686 \
libxml2-devel.i686 libXrandr-devel.i686  libXrender-devel.i686 libxslt-devel.i686 \
libXt-devel.i686 libXv-devel.i686 libXxf86vm-devel.i686 measa-libGL.i686 mesa-libGL-devel.i686  mesa-libGLU.i686 mesa-libGLU-devel.i686 \
ncurses-devel.i686 openldap-devel.i686 openssl-devel.i686 zlib-devel.i686 sane-backends-devel.i686 \
xorg-x11-proto-devel glibc.i686 glibc-devel.i686 prelink libstdc++-devel.i686 pulseaudio-libs-devel.i686 \
gnutls-devel.i686 libgphoto2-devel.i686 openal-soft-devel.i686 isdn4k-utils-devel.i686 \
gsm-devel.i686 libv4l-devel.i686 cups-devel.i686 libtiff-devel.i686 \
gperf flex bison git-core gnupg gcc make libstdc++.i686 SDL SDL-devel libao.i686 readline-devel readline \
libgcc.i686 lzo-devel.i686 libuuid.i686 libXrandr.i686 libXext.i686 gettext

二、修改 frameworks/base/libs/utils/Android.mk

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
改為
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)  -fpermissive
三、修改 build-android
因為源碼裡面的JDK1.6.0_23是32位版本,所以不能使用。將3-5,15行注釋掉,在15行下增加一行,重新加入你的JDK目錄,如果本身環境變量已經有了,可以不加
我改成了如下的內容
export PATH=/usr/java/jdk1.6.0_25/bin:PATH



編譯Kernel

複制.config
編輯Makefile,設定CROSS_COMPILE ?=/home/Android-2.3.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
make -j2


到執行路徑

cd /home/Android-2.3.4


我的設定PATH

PATH="/home/Android-2.3.4/jdk1.6.0_23/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/Android-2.3.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin"
export JAVA_HOME=/home/Android-2.3.4/jdk1.6.0_23
export ANDROID_JAVA_HOME=$JAVA_HOME
export JAVA_BIN=/home/Android-2.3.4/jdk1.6.0_23/bin
export CLASSPATH=/home/Android-2.3.4/jdk1.6.0_23/lib/dt.jar:/home/Android-2.3.4/jdk1.6.0_23/lib/tools.jar
export ANDROID_PRODUCT_OUT=/home/Android-2.3.4/out/target/product/generic
export PATH=$PATH:/home/Android-2.3.4/out/target/product/generic
export PATH=$PATH:/home/Android-2.3.4/out/host/linux-x86/bin
source /home/Android-2.3.4/build/envsetup.sh
./setenv
export ECLIPSE_HOME=/home/eclipse



./build-android


這樣就會OK了


修改arm-linux路徑(Ubuntu會出現這個問題)

錯誤:
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.11' not found (required by prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc)
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.11' not found (required by prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc)
解決:將arm-eabi-4.4.3改為arm-eabi-4.4.3old,並將arm-eabi-4.4.0,建立軟連結arm-eabi-4.4.3


出現錯誤(在Fedora如果修改arm-linux路徑):
make: *** [out/target/product/I7500/obj/EXECUTABLES/alsa_amixer_intermediates/LINKED/alsa_amixer] Error 1
[ 此帖被kazaya在2011-08-04 16:35重新编辑 ]
级别: 骑士
UID: 42149
精华: 2
发帖: 201
金钱: 1115 两
威望: 223 点
综合积分: 442 分
注册时间: 2011-04-05
最后登录: 2013-03-29
1楼  发表于: 2011-08-03 14:52
出错前后的信息也要贴出来。
级别: 圣骑士
UID: 44407
精华: 0
发帖: 386
金钱: 1945 两
威望: 389 点
综合积分: 772 分
注册时间: 2011-04-25
最后登录: 2014-08-25
2楼  发表于: 2011-08-03 17:01
抱歉,因為在mini6410 提供的 Android 2.3.2 版本也是一樣的錯誤,所以有點困擾....

make: *** [out/target/product/mini6410/obj/EXECUTABLES/alsa_amixer_intermediates/LINKED/alsa_amixer] Error 1
make: *** Waiting for unfinished jobs....

Copying: out/target/common/obj/JAVA_LIBRARIES/bouncycastle_intermediates/emma_out/lib/classes-jarjar.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/emma_out/lib/classes-jarjar.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/core-junit_intermediates/emma_out/lib/classes-jarjar.jar
target Strip: liblog (out/target/product/mini6410/obj/lib/liblog.so)
target Strip: libz (out/target/product/mini6410/obj/lib/libz.so)
target Strip: libicuuc (out/target/product/mini6410/obj/lib/libicuuc.so)
target Strip: libexpat (out/target/product/mini6410/obj/lib/libexpat.so)
Install: out/target/product/mini6410/system/lib/liblog.so
Install: out/target/product/mini6410/system/lib/libz.so
Install: out/target/product/mini6410/system/lib/libicuuc.so
Install: out/target/product/mini6410/system/lib/libexpat.so
Install: out/target/product/mini6410/root/init
Install: out/target/product/mini6410/root/sbin/adbd
Symlink: out/target/product/mini6410/root/sbin/ueventd -> ../init
Copying: out/target/common/obj/JAVA_LIBRARIES/guava_intermediates/classes.jar
target Executable: alsa_amixer (out/target/product/mini6410/obj/EXECUTABLES/alsa_amixer_intermediates/LINKED/alsa_amixer)
/home/Android-2.3.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/bin/ld: warning: libcutils.so, needed by out/target/product/mini6410/obj/lib/libaudio.so, not found (try using -rpath or -rpath-link)
/home/Android-2.3.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/bin/ld: warning: libutils.so, needed by out/target/product/mini6410/obj/lib/libaudio.so, not found (try using -rpath or -rpath-link)
/home/Android-2.3.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/bin/ld: warning: libmedia.so, needed by out/target/product/mini6410/obj/lib/libaudio.so, not found (try using -rpath or -rpath-link)
/home/Android-2.3.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/bin/ld: warning: libhardware.so, needed by out/target/product/mini6410/obj/lib/libaudio.so, not found (try using -rpath or -rpath-link)
/home/Android-2.3.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/bin/ld: warning: libhardware_legacy.so, needed by out/target/product/mini6410/obj/lib/libaudio.so, not found (try using -rpath or -rpath-link)
/home/Android-2.3.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/bin/ld: warning: liba2dp.so, needed by out/target/product/mini6410/obj/lib/libaudio.so, not found (try using -rpath or -rpath-link)
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::String8::setTo(android::String8 const&)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::String8::~String8()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioParameter::get(android::String8 const&, android::String8&)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::String8::setTo(char const*)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::VectorImpl::reservedVectorImpl6()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::VectorImpl::reservedVectorImpl2()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::String8::String8(android::String8 const&)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioParameter::getInt(android::String8 const&, int&)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::String8::String8()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `a2dp_write'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioParameter::AudioParameter(android::String8 const&)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::String8::append(char const*)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::SortedVectorImpl::reservedSortedVectorImpl2()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioParameter::~AudioParameter()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `a2dp_stop'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioParameter::addInt(android::String8 const&, int)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `hw_get_module'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `a2dp_init'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioSystem::popCount(unsigned int)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `vtable for android::AudioParameter'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioParameter::add(android::String8 const&, android::String8 const&)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::SortedVectorImpl::reservedSortedVectorImpl7()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `property_get'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `a2dp_cleanup'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `a2dp_set_sink'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::VectorImpl::reservedVectorImpl3()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioParameter::remove(android::String8 const&)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `acquire_wake_lock'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::VectorImpl::reservedVectorImpl5()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::SortedVectorImpl::~SortedVectorImpl()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::SortedVectorImpl::reservedSortedVectorImpl5()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::String8::append(android::String8 const&)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::SortedVectorImpl::reservedSortedVectorImpl6()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::VectorImpl::reservedVectorImpl7()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::SortedVectorImpl::reservedSortedVectorImpl1()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `release_wake_lock'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioSystem::isA2dpDevice(android::AudioSystem::audio_devices)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioParameter::toString()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::VectorImpl::finish_vector()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::SortedVectorImpl::reservedSortedVectorImpl3()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioSystem::isInputDevice(android::AudioSystem::audio_devices)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::SortedVectorImpl::SortedVectorImpl(unsigned int, unsigned int)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::AudioParameter::keyRouting'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::VectorImpl::reservedVectorImpl4()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::String8::String8(char const*)'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::SortedVectorImpl::reservedSortedVectorImpl4()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::SortedVectorImpl::reservedSortedVectorImpl8()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::VectorImpl::reservedVectorImpl1()'
out/target/product/mini6410/obj/lib/libaudio.so: undefined reference to `android::VectorImpl::reservedVectorImpl8()'
collect2: ld returned 1 exit status
make: *** [out/target/product/mini6410/obj/EXECUTABLES/alsa_amixer_intermediates/LINKED/alsa_amixer] Error 1
make: *** Waiting for unfinished jobs....
elapsed seconds: 61
wrote generated Main_*.java files to out/host/linux-x86/obj/EXECUTABLES/vm-tests_intermediates/main_files

[ 此帖被kazaya在2011-08-03 19:00重新编辑 ]
级别: 圣骑士
UID: 44407
精华: 0
发帖: 386
金钱: 1945 两
威望: 389 点
综合积分: 772 分
注册时间: 2011-04-25
最后登录: 2014-08-25
3楼  发表于: 2011-08-03 18:25
這個部份我現在直接取消修改arm-eabi-4.4.0參考路徑,改回arm-eabi-4.4.3路徑,原本直接make會出現下列錯誤,所以又重新./build-android


錯誤:
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.11' not found (required by prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc)
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.11' not found (required by prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc)
解決:將arm-eabi-4.4.3改為arm-eabi-4.4.3old,並將arm-eabi-4.4.0,建立軟連結arm-eabi-4.4.3


測試結果回報:如果採用 "./build-android" 方式,arm-eabi-gcc參考路徑不應該修改...否則會出錯.....^^||
但是由於我要build的Driver
它的target_output為generic而不是mini6410,所以我僅能直接在/home/Android-2.3.4/路徑下執行make