Ubuntu12.04(64bit)编译Android4.4源码和kernel

因为之前没编译过Android源码,make时各种错误让我痛苦了好几天的时间。。。


1.到Oracle的官网上下载1.6的JDK(切记一定要是1.6的,其他版本的会出错;如果你的ubuntu是64位的选择x64的版本,32位的就选择i586版本的JDK)

2.下载android源码,这里我用repo下载了几次都没有成功,所以用了网上别人下好的4.4源码,再此感谢

3.硬件环境:

3.1.硬盘容量:因为安装ubuntu12.04时是在win7下用wubi装的双系统,所以ubuntu12.04最大的虚拟硬盘只有30G(这肯定不够我们编译源码的),最好有80G以上的硬盘。辛好还有一个800G的磁盘设备,我们将它挂载到ubuntu下让终端可以访问它:

先用fdisk -l查看硬盘信息,然后sudo mount /dev/sda5 /mnt/sda5,修改/etc/fstab文件:加入/dev/sda5 /mnt/sda5 ntfs auto 0 0 ,重新启动发现挂载成功

将我们android4.4的源码移动到该挂载的磁盘上解压缩,编译前大概有9G的大小,此后我们将在这块磁盘上编译我们的源码

PS:源码目录不要有中文,不然make时会出错

3.2内存:系统最好要有8G以上的物理内存,不然make时会提示出错,具体是什么错误忘记了

4.安装JDK(我下载的是jdk-6u38-Linux-x86.bin):

sudo mkdir /usr/local/Java

切换到jdk-6u38-linux-x86.bin目录下

sudo mv jdk-6u38-linux-x86.bin /usr/local/java

cd /usr/local/java

sudo chmod 755 jdk-6u38-linux-x86.bin    --修改权限为可执行

sudo sh jdk-6u38-linux-x86.bin                    --执行jdk.bin,生成目录jdk1.6.0_38

5.设置jdk的环境变量:

sudo vim /etc/profile        --在/etc/profile  中添加环境变量会使所有的用户都受到影响,如果不同的用户想要用不同的jdk就不要在/etc/profile上设置了

在末尾添加上:

#for java_environment

export JAVA_HOME=/usr/local/java/jdk1.6.0_38 
export JRE_HOME=/usr/local/java/jdk1.6.0_38/jre   
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

保存退出,重启系统

ctrl+alt+T,输入java -version,可以看到


就说明jdk安装成功了

6.安装编译android源码时需要用到的工具链(由前辈们总结出来):

sudo apt-get install Git git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev 
sudo apt-get install lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos Python-markdown
sudo apt-get install libxml2-utils xsltproc gcc-multilib lib32readline5-dev

装好上述的工具链后你会发现make时基本很顺利

7.准备好上面的步骤后可以开始编译源码了:

切换到android4.4的目录

source build/envsetup.sh

make -jn(n由你的电脑决定,2核的是4,4核的是8,我用的-j4,发现make时快了很多)

这个时间应该会很久,可以去看场电影了,回来发现


生成system.img就说明编译成功了,编译后的源码有35G左右

8启动模拟器:

source build/envsetup.sh

lunch full-eng

emulator                 ---如果你不先lunch一下的话会提示你系统没有emulator这个命令


成功!!!



接下来是kernel的编译:

PS:编译sdk时将system.img自动删除了,不能运行模拟器了,艹,只能重新编译内核,辛好之前有编译过有经验编译起来不难(重新编译后文件大小没有增加,还是原来的大小)
1.下载goldfish内核:
goldfish版本:3.4(来源:网盘,试了从网址下载不行), 解压

2. Android4.4目录下创建一个kernel文件夹,将解压后的goldfish放在kernel文件夹下
通过终端进入解压后的goldfish文件夹,运行
export PATH=$PATH:/mnt/sda5/Android4.4/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin

3.修改goldfish-android-goldfish-3.4目录下的Makefile文件:
#ARCH        ?= $(SUBARCH)
#CROSS_COMPILE    ?= $(CONFIG_CROSS_COMPILE:"%"=%)
#上面注释掉,加入下面的
ARCH ?= arm
CROSS_COMPILE     ?= arm-eabi-

4.goldfish-android-goldfish-3.4目录下如下命令:
 $ make goldfish_armv7_defconfig
goldfish-android-goldfish-3.4目录执行make命令:
$make

编译成功

PS:

android4.4kernel目录下make时,出现错误make:arm-eabi-gcc:命令未找到解决方法:配置环境变量时一定要在当前的编译内核的终端标签页内对环境变量进行配置,在其他标签页或者终端中是不行的。

1sudo gedit /etc/profile

2、在文件末尾加入arm-eabi-gcc编译器的bin目录保存退出,如果该目录下没有,那你需要自己去下载arm-eabi-gcc编译器,并将整个路径替换为你机器上对应的路径。不过正常情况下安卓源码中应该是有该编译器的。

exportPATH=$PATH:/你的安卓源码目录/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin

如果该路经已存在,12步可省略。

3su切换到root权限

4source/etc/profile

5make

成功解决!!!



参考:http://www.jianshu.com/p/6d97b4a10b18

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值