ubuntu 上android 源码编译 全过程(二)

前面 jdk安装完成 剩下的就是下载android源码 编译了

首先装一下这些,编译用到

sudo apt-get install flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev build-essential zip curl valgrind

里面libsdl1.2-dev libwxgtk2.8-dev是新的,不是别的书上的老的,老的源已经没有了,这些可能还不够,在编译的时候再看错误在解决吧

下载 android 源码,网上很多自己可以搜,要我的4.0.3也可以到资源里面下载。

下载放在 /Android 里面解压。

进入目录下执行

source./build/envsetup.shmake

然后就是等待错误解决错误,肯定有很多错误的。

首先推荐几个网站,,然后把我的错误给大家贴出来

其实还是自己遇到问题查的速度快,这样在里面找很慢的。

问题一

<built-in>:0:0:note:thisisthelocationofthepreviousdefinitionhostStaticLib:libOpenglCodecCommon(out/host/linux-x86/obj/STATIC_LIBRARIES/libOpenglCodecCommon_intermediates/libOpenglCodecCommon.a)hostSharedLib:libOpenglRender(out/host/linux-x86/obj/lib/libOpenglRender.so)/usr/bin/ld:cannotfind-lX11collect2:ldreturned1exitstatusmake:***[out/host/linux-x86/obj/lib/libOpenglRender.so]Error1

解决方法:$sudoln-s/usr/lib/i386-linux-gnu/libX11.so.6/usr/lib/i386-linux-gnu/libX11.so

问题二

[out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb]error

解决方案:

$sudo apt-get install libncurses5-dev

如果再编译不过:

$sudo apt-get install lib32ncurses5-dev

没有就先执行sudo apt-get update –fix-missing

问题三

out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt]

解决方法我先找的这个 没用貌似不过网上很多人解决了我的解决是没有把默认改为jdk1.6还是openjdk导致的。上一篇博客安装时候我就让大家修改了。sudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.06/bin/jar /bin/jarsudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.06/bin/java /bin/javasudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.06/bin/javac /bin/javacsudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.06/bin/javah /bin/javahsudo ln -s/usr/lib/jvm/java-6-sun-1.6.0.06/bin/javadoc /bin/javadocsudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.06/bin/java /bin/java

问题四

[out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex] 已杀死

是系统内存不够了,直接虚拟机设置里面改为2048 以前我的事1024

或者按照人家的解决 增加虚拟内存:sudo dd if=/dev/zero of=/swapfile bs=1024 count=512Mmkswap /swapfileswapon /swapfile

把swapfile写入/etc/fstab 文件,在后面加入/swapfile swap swap defaults 0 0

问题五

make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] 错误 1

解决方法: sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so

在网上搜到上面的解决方法,可是按照上述方法做了,问题依旧。经过多方实验,才发现问题所在。通过apt-get install的库不是libGL.so.1.2了。而是libGL.so.1.2.0.所以大家在创建链接的时候最好去/usr/lib/i386-linux-gnu/mesa/这个目录下看看libGL的库版本,不要完全按照网上的照抄。现在网上的都是“sudoln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so ”我的还是1.2ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so 。可能库最近升级了。

问题六

g++: g++: selected multilib ’32’ not installed

解决

sudo apt-get install g++-multilibsudo apt-get install libc6-dev ia32-libs lib32ncurses5-dev x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utilssudo apt-get install g++-4.4-multilib

问题七

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

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

问题八

喜欢就喜欢了,心被牵动,无须理由,爱上你是我的自由,

ubuntu 上android 源码编译 全过程(二)

相关文章:

你感兴趣的文章:

标签云: