ubuntu12.04 下android4.0源码编译

jopen 12年前

经过几波周折,终于在ubuntu上面成功编译android4.0的源码,为什么要编译源码呢,主要是在源码的环境下做一下类似于需要底层框架支持的程序,比如说launcher或者其他占用资源特别多的应用程序。因为我的eclipse经常崩溃。好吧,废话不多说了 开始吧 希望对您有用。其中部分资源也是我在网上搜索到的。

1、初始化编译环境

(1)软件需求:

    Python 2.5 -- 2.7, which you can download from python.org.

    GNU Make 3.81 -- 3.82, which you can download from gnu.org,

    JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older. You can download both fromjava.sun.com.

    Git 1.7 or newer. You can find it at git-scm.com.

(2)安装jsk1.6:

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

也可以自己去官网下载最新的1.6的jdk

(3)安装32位的库 我的是64位的操作系统

要安装getlibs这么一个东西 去网上搜索,软件中心里面我没有找到。安装完成后运行

tiger@tiger-desktop:~$ getlibs
会安装一序列需要支持的32位的so

(4)运行下面操作,当然有些so是(3)已经完成的了

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_35/bin/java$ 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
这一个命令可能会出错,别搭理他 继续往下执行
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

目前所需环境基本上已经配置完成。别着急下面还有一些关键性的配置:

2.配置环境
(1)配置java环境

确保安装了1.6最新版本的jdk

进行连接
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_35/bin/java

sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_35/bin/javac

sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.6.0_35/bin/javadoc

sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_35/bin/jar

(2)配置gcc

通过gcc -v命令可以发现gcc库在/usr/lib/gcc/i686-linux-gnu目录下,该目录下有当前系统支持的各种版本gcc库 。在安装gcc 4.4前该目录下是没有4.4目录的,安装gcc 4.4后该目录下就会多出4.4这个目录,且该4.4目录下有各种相应库文件。

ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。
1    $sudo apt-get install gcc-4.4
2    $sudo apt-get install g++-4.4

装完后进入到/usr/bin目录下
1    $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,方法如下:
1    $sudo mv gcc gcc.bak
2    $sudo ln -s gcc-4.4 gcc

同理,对g++也做同样的修改:
1    $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:
1    $sudo mv g++ g++.bak
2    $sudo ln -s g++-4.4 g++

再查看gcc和g++版本号:
gcc -v
g++ -v
均显示gcc version 4.4.6 ,说明gcc 4.4安装成功。

 

提示bits/predefs.h:没有那个文件或目录 错误的

输入sudo apt-get install gcc-multilib 即可

g++ selected multilib '32' not installed

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

 

SDL_syswm.h:55: 致命错误

sudo apt-get install libx11-dev

 

/usr/bin/ld: cannot find -lz

sudo apt-get install lib32z1-dev


3.编译

进入到android源码跟目录下面

   sudo source build/envsetup.sh

   sudo lunch full-eng

  sudo  make -j8(cpu的核数 乘2我的是4核)

编译中可能会遇到一些错误

如果缺少库的话 可以运行

sudo get-libs 库名 来安装相应的库

常见问题请参考

http://wenku.baidu.com/view/52813b61f5335a8102d220b0.html

源文地址

http://source.android.com/source/initializing.html

转自:http://blog.csdn.net/jzh2012/article/details/7984000