1. 先需要配置安装JDK, 务必下载安装JDK1.6版本,否者编译会遇到意向不到的问题,还是需要按照google官方文档会省不少力气,可惜google官方文档是基于Ubantu
2. 按照官方文档开始编译
# cd android_src
# . build/setenv.sh
#lunch
#make
3. 编译错误解决
3.1 glibc 32库
In file included from /usr/include/features.h:387:0,
from /usr/include/stdlib.h:25,
from build/tools/acp/acp.c:11:
/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录
#yum install glibc-devel.i686
3.2 缺少32位的zlib库
host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)
/usr/bin/ld: skipping incompatible /usr/lib64/libz.so when searching for -lz
/usr/bin/ld: cannot find -lz
collect2: ld 返回 1
#yum install zlib.i686 zlib-devel.i686
host Executable: adb (out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb)
host Executable: adb (out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb)
/usr/bin/ld: skipping incompatible /usr/lib64/libtinfo.so when searching for -ltinfo
/usr/bin/ld: cannot find -ltinfo
collect2: ld 返回 1
#yum install ncurses-devel.i686 ncurses-libs.i686
host SharedLib: libOpenglRender (out/host/linux-x86/obj/lib/libOpenglRender.so)
/usr/bin/ld: skipping incompatible /usr/lib64/libX11.so when searching for -lX11
/usr/bin/ld: cannot find -lX11
/usr/bin/ld: skipping incompatible /usr/lib64/libX11.so when searching for -lX11
/usr/bin/ld: cannot find -lX11
collect2: ld 返回 1
make: *** [out/host/linux-x86/obj/lib/libOpenglRender.so] 错误 1
#yum install libX11.i686 libX11-devel.i686
host StaticLib: libGLcommon (out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/libGLcommon.a)
host SharedLib: libGLES_CM_translator (out/host/linux-x86/obj/lib/libGLES_CM_translator.so)
/usr/bin/ld: skipping incompatible /usr/lib64/libGL.so when searching for -lGL
/usr/bin/ld: cannot find -lGL
collect2: ld 返回 1
make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] 错误 1
#yum install libgle.i686 libgle-devel.i686
#yum install libGLEW.i686 libGLEWmx.i686
#ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so
sh: gperf: 未找到命令
calling gperf failed: 32512 at ./makeprop.pl line 140.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h] 错误 25
make: *** 正在删除文件“out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h”
target Generated: libwebcore <= external/webkit/Source/WebCore/html/DocTypeStrings.gperf
Can't locate Switch.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at external/webkit/Source/WebCore/make-hash-tools.pl line 23.
BEGIN failed--compilation aborted at external/webkit/Source/WebCore/make-hash-tools.pl line 23.
#yum search perl|grep switch
#yum install perl-Switch.noarch
原因是fedora16缺省安装的perf-5.14拿掉了switch.pm模块,所以需要重新安装一下
顺利打完,收工,分析原因在64bit系统中编译android, 部分代码需要32位的一些库支持,才能顺利编译,因为目标平台现在arm都是32bit.