ubuntu12.04编译Android 4.0.3 Source+Kernel记

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这个工具,你可以使用如下命令安装:

sudo apt-get install gparted

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

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

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-dev:i386 g++-multilib mingw32 openjdk-6-jdk tofrodos 
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,然后安装即可。

cp jdk-6u22-linux-i586.bin /opt
cd /opt
./jdk-6u22-linux-i586.bin

然后修改环境变量:

sudo vim /etc/environment
//将/opt/jdk1.6.0_22/bin:/opt/jdk1.6.0_22/lib:/opt/jdk1.6.0_22添加到PATH最前面,结果类似于
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]。

sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4
cd /usr/bin
sudo ln -s gcc-4.4 gcc

sudo ln -s g++-4.4 g++

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

. build/envsetup.sh
lunch full_x86-eng
make -j8

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

最后编译内核,按照官网说的做就行。
//设置交叉编译工具路径,具体看你把prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin放哪了
export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-
make herring_defconfig
make


转自:http://shiyanhui.net/archives/369

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值