您的位置:首页 > 移动开发 > Android开发

Ubuntu 12.04成功编译android4.4和android4.0源码

2015-08-21 19:53 369 查看
本文参考了文章《史上最详细android4.4源码下载和编译全过程》,见download.csdn.net/detail/yxchen0811/6995527,还花了10个资源分在CSDN上下载了下来,实际操作还是与文章有点出入。

用的VMware workstation的虚拟机软件是11.0,它需要是win 7以上系统,并且是64位的,xp的装不了,只能装10.0的。

Ubuntu 12.04.5 LTS的64位系统,需要4G内存,60G硬盘。有人问,为什么不用Ubuntu 14.04,我也尝试过,出现稀奇古怪的问题比较多,而且在我的电脑上gcc还降不了级,没办法听说12.04的错误比较少,就相中了他,实践来看,果然还是12.04的好用。

1、安装JDK等工具包

JDK(Java SE development Kit),注意,必须是bin文件,我们的系统是64位的,然后去oracle网站注册了下载了jdk-6u38-linux-x64.bin的包,下下来后,修改使其具有可执行权限。

sudo chmod 777 jdk-6u38-linux-x64.bin

./jdk-6u38-linux-x64.bin

然后就是用vi编辑/etc/profile文件,在最后加上有关JAVA的一些环境变量:

sudo vi /etc/profile

 

export JAVA_HOME=/home/cxy/jdk-1.6_30

export JRE_HOME=/home/cxy/jdk-1.6_30/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

这个要根据自己解压的JDK包在哪里来设置,然后保存退出,source /etc/profile,在终端窗口输入java -version来查看我们的JDK包安装好了没有。

 

安装交叉编译工具链,解压到/usr/local/arm下后,arm-2009q3,但是还没设置环境变量,有些命令它会找不到的,sudo vi /etc/environment,把arm-2009q3中bin文件的路径加入其中,这个估计不设置编译android的没问题,但是可能编译在ARM上跑的内核时需要。

 

下面就是一些其他工具软件的安装:

1、sudo apt-get install ia32-libs-multiarch:i386

2、sudo apt-get install flex

3、sudo apt-get install g++

4、sudo apt-get install gpref

5、sudo apt-get install bison

6、sudo apt-get install libxml2-utils

 

编译内核kernel,还需要安装一下两个软件包:

7、sudo apt-get install libncurses5-dev

8、sudo apt-get install sharutils

 

注:如果在本Ubuntu虚拟机系统上编译android 4.0的源码,则要进行如下操作:

 


在上面安装过的就不用安装了,注意上面的工具包的名字中字母“l”和数字“1”的区分,另外还要进行gcc、g++降级,

另外,本人在编译过程中遇到一个错误:

/usr/bin/bash:cc command not found

解决方法是在/usr/bin目录下执行

sudo ln -s gcc cc

 

在编译android 4.4的源码时,gcc不用降级,但是编译android 4.0的时候gcc我降级到了4.4.

g++降级到4.4后,后面还要安装一个工具包:

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

2、编译android4.4源码

先解压出来源码,然后进入源码目录

source build/envsetup.sh

lunch(先敲这个,它下面会有选项,这里选5 ut4412-eng或者6 ut4412-userdebug都可以)

make -jN(这里N是你的电脑的线程数,比如说你的电脑是4核8线程的,那么N就是8,这样可以加速编译过程)

 

接下来就是几个小时的漫长的编译过程啦,我在编译过程中也遇到了一个问题,就是在编译最后提示找不到mkimage命令,而这个命令是编译U-boot后生成的,在uboot/tools目录下面,所以我又编译U-boot,进入u-boot目录,执行./gen.sh,编译完,把uboot/tools里面的mkimage复制到/usr/bin目录下,sudo cp uboot/tools/mkimage /usr/bin,再重新make -j8,就可以啦。

 

最后,会在android源码目录的out/target/product/下面生成3个镜像:system.img,ramdisk.img,userdata.img,这就表示成功啦。

 


   另注:编译内核时用make menuconfig确认生成.config文件再make,免得在编译过程中有很多编译项要你确认。

编译感悟:在这个编译过程中,可能会出现一个又一个的问题,不同的软硬件环境可能还会有不同的问题,如果实在不行,可以再换个系统试试,遇到问题,也可以多到网上去查查,看看问题在哪里,还可以参考source.android.com安卓源码官网的编译要求。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: