Ubuntu 8.10 编译 Android2.3.4

编译时遇到些问题,这里记录下来,方便回顾:

1、arm-eabi-4.4.3

prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc -mthumb-interwork -Ibionic/libc/private -o out/target/product/generic/obj/lib/crtbegin_dynamic.o -c bionic/libc/arch-arm/bionic/crtbegin_dynamic.S

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)

make: *** [out/target/product/generic/obj/lib/crtbegin_dynamic.o] 错误 1

 

这个编译错误是因为在32位Ubuntu上编译引起的交叉编译器问题,需要降低使用的版本,使用4.4.0来进行编译;

解决方法

      进入android源码目录中 /prebuild/linux-x86/toolchain/,里面包含了几个版本的交叉编译器arm-eabi-4.x.x,这里直接正在使用的arm-eabi-4.4.3备份,比如重命名成arm-eabi-4.4.3-old,然后新建一个arm-eabi-4.4.3文件夹,并将arm-eabi-4.4.0里的内容copy一份到新建的arm-eabi-4.4.3中,这样就起到了欺骗的效果,实际使用的就是4.4.0;

2、GCC

 

target thumb C: liba2dp <= external/bluetooth/bluez/audio/../sbc/sbc_primitives_neon.c external/bluetooth/bluez/audio/../sbc/sbc_primitives_neon.c: In function 'sbc_calc_scalefactors_j_neon': external/bluetooth/bluez/audio/../sbc/sbc_primitives_neon.c:309: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm' external/bluetooth/bluez/audio/../sbc/sbc_primitives_neon.c:309: error: 'asm' operand has impossible constraints make: *** [out/target/product/galaxys/obj/SHARED_LIBRARIES/liba2dp_intermediates/../sbc/sbc_primitives_neon.o] Error 1

 

Ubuntu 8.10上自带的gcc版本是4.3.2,在编译2.3时会出现上面的'GENERAL_REGS’错误,这是由于这个版本的gcc存在一个bug,所以对gcc进行升级即可,

解决方法

  apt-get install gcc

如果这时候,你还是无法编译通过,那么建议你换高版本的系统试试,比如换到ubuntu 10.10上,

建议装个双系统,使用ubuntu提供的wubi工具,直接装十分的方便~

3、G++

换到10.10 编译时,居然又抽风出现,gcc: error trying to exec 'cc1plus': execvp: 没有那个文件或目录的错误

找不到cc1plus,说明G++与GCC之间存在问题,很有可能是正在使用的两者版本不一样导致

cd /usr/bin
ls -l gcc*
lrwxrwxrwx 1 root root 7 2011-10-20 16:38 gcc -> gcc-4.4
-rwxr-xr-x 2 root root 212168 2010-09-10 17:16 gcc-4.3
-rwxr-xr-x 1 root root 224488 2010-09-28 02:43 gcc-4.4
-rwxr-xr-x 1 root root 232912 2010-09-28 05:03 gcc-4.5

ls -l g++*
lrwxrwxrwx 1 root root 7 2011-10-20 16:36 g++ -> g++-4.3
-rwxr-xr-x 2 root root 212104 2010-09-10 17:15 g++-4.3
-rwxr-xr-x 1 root root 228520 2010-09-28 02:42 g++-4.4

 

果然版本不一,修改成一样的即可

rm g++

ln -s g++-4.4 g++ //将g++重定向到4.4的版本



        

posted @ 2011-10-19 14:48  balenofly  阅读(2123)  评论(0编辑  收藏  举报