Mac OS X Lion下编译Android Source错误连连,无奈还得用Ubuntu,最近ubuntu发布了LTS版本12.04,于是乎就用12.04了。由于Mac OS本身就源于BSD Unix,装ubuntu多系统有点浪费硬盘,就用虚拟机VMware Fusion装了ubuntu。

一、增大虚拟硬盘
但是麻烦又来了,VMware Fusion默认分给ubuntu的最大虚拟硬盘空间只有20G,而Android官网上说,“The source download is approximately 6GB in size. You will need 25GB free to complete a single build, and up to 90GB (or more) for a full set of builds”,于是还得增大虚拟硬盘的空间。方法如下:1、虚拟机->设置->硬盘,然后将磁盘大小改到你想要的大小,这里我的是120G。

2、将新增的部分格式化。
这里我在ubuntu里直接用了GParted这个工具,你可以使用如下命令安装:

[cpp]  view plain copy
  1.   
[cpp]  view plain copy
  1. sudo apt-get install gparted  

剩下的操作就简单了,需要将未格式化的部分格式化为ext4格式,然后挂在就行了。其实就相当于你原先只有C盘的Windows增添了一个D盘。

二、设置编译环境
解决了空间的问题,就需要按照Android官网上的教程一步一步做了。在ubuntu12.04下,只需三步:
1、安装依赖包,其实就是官网上那一步:

[cpp]  view plain copy
  1. sudo apt-get install git-core gnupg flex bison gperf build-essential   
  2. zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386   
  3. libreadline6-dev:i386 libgl1-mesa-dev:i386 g++-multilib mingw32 openjdk-6-jdk tofrodos   
  4. python-markdown libxml2-utils xsltproc zlib1g-dev:i386  

2、安装sun-java
按照官网上说的,openjdk编译有问题,所以必须得安装sun官方的JDK。先从sun官网上下载JDK,2.3或者更新的版本用java6,2.2及以前的版本用java5。我们的版本是4.0.3,所以应该下载jdk6,这里我们用的是jdk-6u22-linux-i586.bin。先将jdk-6u22-linux-i586.bin copy到/opt,然后安装即可。

[cpp]  view plain copy
  1. cp jdk-6u22-linux-i586.bin /opt  
  2. cd /opt  
  3. ./jdk-6u22-linux-i586.bin  

然后修改环境变量:

[cpp]  view plain copy
  1. sudo vim /etc/environment  
  2. //将/opt/jdk1.6.0_22/bin:/opt/jdk1.6.0_22/lib:/opt/jdk1.6.0_22添加到PATH最前面,结果类似于  
  3. PATH="/opt/jdk1.6.0_22/bin:/opt/jdk1.6.0_22/lib:/opt/jdk1.6.0_22:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"  


注意:必须把路径加载最前面,以防止系统使用openjdk,或者你把openjdk卸载也行。
3、将默认的gcc4.6换成gcc4.4,太高的gcc版本导致出现各种错误,比如error: “_FORTIFY_SOURCE” redefined [-Werror]。

[cpp]  view plain copy
  1. sudo apt-get install gcc-4.4  
  2. sudo apt-get install g++-4.4  
  3. cd /usr/bin  
  4. sudo ln -s gcc-4.4 gcc  
  5.   
  6. sudo ln -s g++-4.4 g++  

三、下载编译
剩下的就是下载Android Source,这个按官网上照做就行,可以参照前面的一篇博客。编译源代码:

[cpp]  view plain copy
  1. . build/envsetup.sh  
  2. lunch full_x86-eng  
  3. make -j8  

那么怎么下载Android内核呢?我的测试机为Nenux S,因此以S为例:
[cpp]  view plain copy
  1. git clone https://android.googlesource.com/kernel/samsung.git  
  2. //查看版本  
  3. git bransh -a  
  4. //这里我选择了remotes/origin/android-samsung-3.0-ics-mr1  
  5. git checkout -b android-samsung-3.0-ics-mr1 origin/android-samsung-3.0-ics-mr1  

最后编译内核,按照官网说的做就行。
[cpp]  view plain copy
  1. //设置交叉编译工具路径,具体看你把prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin放哪了  
  2. export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH  
  3. export ARCH=arm  
  4. export SUBARCH=arm  
  5. export CROSS_COMPILE=arm-eabi-  
  6. make herring_defconfig  
  7. make  
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐