Ubuntu 11.10[64位] 编译Android源码

    这里是64位Ubuntu 11.10系统,Android2.3.7源码。官网上有编译源码的指导,但实际还会遇到些问题。JDK安装就不说了,上一篇刚写过。
    欢迎互相交流。
    另,配置这些东西让我有些伤心,越配越消极。个把月前的编译还未成功,这次可是重装系统来的。
1)安装依赖的包
终端执行:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
  x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils

$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so

2)编译源码
进入源码目录:
$ . build/envsetup.sh
$ lunch
  输入 : 1
$ make -j4

遇到的问题
a) frameworks/base/libs/utils/RefBase.cpp:507:67: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive]
解决方法:
进入源码目录frameworks/base/下,执行
git cherry-pick c4fbbe06

b) make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 错误 1
据说此处编译错误是由于ubuntu 11.10采用了 GCC4.6.1导致的。
修改源码目录下/build/core/combo/HOST_linux-x86.mk文件:
将以下语句
HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
修改为
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

3)编译完成
    编译完成后会在out/target/product/generic目录下生成system.img, ramdisk.img, userdata.img三个镜像文件。
    终于结束了,环境问题困扰了我好久,过程是 蛋疼的 ,但现在还是有些快感的。工作日报都知道怎么写了,加班,搞点内容出来才行。
==========
参考
GCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。它是一套

 

以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划的关键部分,亦是自由的类Unix及苹果电脑 Mac OS X 操作系统的标准编译器。
  GCC 原名为 GNU C 语言编译器,因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C++。之后也变得可处理 Fortran、Pascal、Objective-C、Java, 以及 Ada与其他语言。

你可能感兴趣的:(源码,android,ubuntu,编译)