现在的位置: 首页 > 综合 > 正文

ubuntu 12.04编译android常见错误及解决办法

2013年10月11日 ⁄ 综合 ⁄ 共 3597字 ⁄ 字号 评论关闭

错误:

 

1、安装全部库时libc6-dev:i386

 

错误:

 

Errors were encountered while processing:

 

 libc6-dev:i386

 

E: Sub-process /usr/bin/dpkg returned an error code (1)

 

root@mao-virtual-machine:~# apt-get install libc6-dev:i386

 

Reading package lists... Done

 

Building dependency tree      

 

Reading state information... Done

 

libc6-dev:i386 is already the newest version.

 

You might want to run 'apt-get -f install' to correct these:

 

The following packages have unmet dependencies:

 

 libc6-dev:i386 : Depends: linux-libc-dev:i386 but it is not going to be installed

 

                  Recommends: gcc:i386 but it is not going to be installed or

 

                              c-compiler:i386

 

E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

 

root@mao-virtual-machine:~# apt-get install linux-libc-dev:i386

 

root@mao-virtual-machine:~# apt-get install libc6-dev:i386

 

root@mao-virtual-machine:~# sudo apt-get install git-core gnupg flex bison gperf build-essential   zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev   libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386   libgl1-mesa-dev
g++-multilib mingw32 openjdk-6-jdk tofrodos   python-markdown libxml2-utils xsltproc zlib1g-dev:i386

 

 

 

2、错误:/usr/bin/ld: cannot find -lz

 

host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)

 

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/http://www.cnblogs.com/../libz.so when searching for -lz

 

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/http://www.cnblogs.com/../libz.a when searching for -lz

 

/usr/bin/ld: skipping incompatible //usr/lib/libz.so when searching for -lz

 

/usr/bin/ld: skipping incompatible //usr/lib/libz.a when searching for -lz

 

/usr/bin/ld: cannot find -lz

 

collect2: ld returned 1 exit status

 

make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1

 

缺少lib32z1-dev,安装即可:apt-get install lib32z1-dev

 

 

 

3、编译选项[-fpermissive]

 

frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive]

 

make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] Error 1

 

修改mk文件:

 

$ gedit frameworks/base/libs/utils/Android.mk

 

将:LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

 

改为:LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive

 

需要注意的是:–fpermissive 前边的-是带输入法的,改为不带输入法的 短线就可以了

 

 

 

4、GCC版本过高

 

host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp

 

<command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]

 

<built-in>:0:0: note: this is the location of the previous definition

 

cc1plus: all warnings being treated as errors

 

make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1

 

原因:

 

 此处编译错误是由于ubuntu 11.10采用了GCC4.6.1导致的。

 

 解决方法:

 

 使用gcc4.4 版本进行编译.

 

sudo apt-get install gcc-4.4

 

 sudo apt-get install g++-4.4

 

 装完后在/usr/bin目录下

 

 $ ls -l gcc*

 

 lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6

 

 -rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4

 

 -rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6

 

 发现gcc 链接到gcc-4.6,  需要将它改为链接到gcc-4.4 :

 

 sudo mv gcc gcc.bak

 

 sudo ln -s gcc-4.4 gcc

 

 同理

 

 ls -l g++*

 

 lrwxrwxrwx 1 root root      7 2011-08-14 15:17 g++ -> g++-4.6

 

 -rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4

 

 -rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6

 

 需要将g++链接改为g++-4.4:

 

 /usr/bin$ sudo mv g++ g++.bak

 

 /usr/bin$sudo ln -s g++-4.4 g++

 

 再查看gcc和g++版本号:

 

 gcc -v

 

 g++ -v

 

 均显示gcc version 4.4,说明gcc 4.4安装成功。

 

 

 

5、gcc降到4.4后错误

 

host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp

 

host Executable: obbtool (out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/obbtool)

 

g++: selected multilib '32' not installed

 

make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/obbtool] Error 1

 

解决:

 

sudo apt-get install g++-4.4-multilib

抱歉!评论已关闭.