经过几波周折,终于在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这么一个东西 去网上搜索,软件中心里面我没有找到。安装完成后运行
[email protected]:~$ 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