前面 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.sh
make
然后就是等待错误解决错误,肯定有很多错误的。
首先推荐几个网站,然后把我的错误给大家贴出来
http://wenku.baidu.com/view/5e819cddce2f0066f533228d.html
http://www.cnblogs.com/flv587/p/3503566.html
其实还是自己遇到问题查的速度快,这样在里面找很慢的。
问题一
<built-in>:0:0:
host
bOpenglCodecCommon_intermediates/libOpenglCodecCommon.a)
host
/usr/bin/ld:
collect2:
make:
解决方法:$
问题二
[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/jar
sudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.06/bin/java /bin/java
sudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.06/bin/javac /bin/javac
sudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.06/bin/javah /bin/javah
sudo ln -s/usr/lib/jvm/java-6-sun-1.6.0.06/bin/javadoc /bin/javadoc
sudo 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=512M
mkswap /swapfile
swapon /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的库版本,不要完全按照网上的照抄。现在网上的都是“sudo
ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so ”我的还是1.2
ln -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++-multilib
sudo 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-utils
sudo 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
$ 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
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 -vg++ -v
问题八
development/tools/emulator/opengl/system/gralloc/gralloc.cpp:791: warning: missing initializer for member 'gralloc_module_t::reserved_proc'
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/gralloc.goldfish_intermediates/gralloc.o] Error 1解决方法
/development/tools/emulator/opengl/system/gralloc
gralloc.cpp添加
getphys: NULL,
struct private_module_t HAL_MODULE_INFO_SYM = { base: { common: { tag: HARDWARE_MODULE_TAG, version_major: 1, version_minor: 0, id: GRALLOC_HARDWARE_MODULE_ID, name: "Graphics Memory Allocator Module", author: "The Android Open Source Project", methods: &gralloc_module_methods, dso: NULL, reserved: {0, } }, registerBuffer: gralloc_register_buffer, unregisterBuffer: gralloc_unregister_buffer, lock: gralloc_lock, unlock: gralloc_unlock, perform: NULL, getphys: NULL, reserved_proc : {NULL, } }}
未解决
出现错误sorry, unimplemented: non-trivial designated initializers not supported'因为这个地方注意了,gcc不支持后缀名为cpp的文件使用这种方式
你是不是用make编译的,看文档上说明,在源码目录下用./build-android编译!!!这个哥们说对了貌似,以前2.3.7make
这回拷贝的人家的android4.0.3,没有文档,原来里面有个build-android用来编译,make干嘛的我就不知道了
问题九
host c++: libhost <= build/libs/host/pseudolocalize.cpp/bin/bash: g++: 未找到命令
make: ***[out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/pseudolocalize.o] 错误 127
解决方法:$ sudo apt-get install build-essential
sudo apt-get install libc6-dev-i386
问题十
/usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directoryIn file included from
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 1
解决方法
ln -sv /usr/src/linux-headers-2.6.38-8/arch/x86/include/asm /usr/include/asm
这里红色的对应你自己的目录哦。一定要确保gcc g++ 版本一致。
如果bin/bash cc命令没有 那是因为没有软链接 cc只想gcc 用来编译C语言 g++编译c++
软连接的 进入/usr/bin 命令ln -s gcc cc
问题真多啊过程中还因为我开始创建没有分配够磁盘重新安装了一遍,我去。。。。还好做了笔记啊所以记录是一个非常好的习惯。