红联Linux门户
Linux帮助

为nexus5编译ubuntu14.04TLSx64(android4.4.4 r1+kernel)

发布时间:2016-01-21 15:33:36来源:linux网站作者:justFWD

vmware经过3天的编译终于编译完安卓4.4的源码,整个过程并不顺利,因此记录下编译过程。


编译环境搭建:

vmware 10.01

Ubuntu 14.04 TLS 64位

硬盘:80G

如果编译过程中遇到硬盘空间不够可以执行以下步骤:

1、$ vmware安装目录/vmware-vdiskmanager -x 80Gb "D:\VMware\WinXP\myUbuntu.vmdk"

2、vmware启动gparted-live-0.22.0-2-i586.iso进行分区扩容,详细请百度

内存:8G

依赖库:

1、添加ia32依赖库

$ sudo apt-get update

$ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6

2、添加google建议依赖包

$ apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-d    ev:i386 zip

安装jdk,官方建议openjdk7但是编译时提示错误后来卸载后装的oracle jdk6

python建议2.3-2.7,查看版本

$ python -version

添加ubuntu交换区,否则在编译libwebviewchrominum.so时会失败

$ mkdir /swap

$ cd /swap

$ dd if=/dev/zero of=swapfile bs=1024 count=1029000

$ mkswap swapfile

$ swapon swapfile

$ swapoff swapfile

$ free -m


2、下载设备驱动

接下来需要在Android官网下载 Nexus5所需要的驱动,下载完成后,解压出来是三个.sh文件,放到Android源码目录下面,然后执行,会将相关驱动放到vender目录下面。

PS:github上更新下来的/vendor/qcom/hammerhead/device-partial.mk为空,需要从其它资源拷贝一份回来,编译完成后才会正常加载libegl.so


3、编译内核

3.1从官网查看使用的内核版本如下:

Device Binary location
Source location Build configuration

hammerhead device/lge/hammerhead-kernel
kernel/msm hammerhead_defconfig

$ git clone https://android.googlesource.com/device/lge/hammerhead-kernel
$ cd hammerhead-kernel

3.2 配置gcc环境变量

$ export PATH=$(pwd)/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH

3.3 开始编译

$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ make panda_defconfig
$ make

编译完成后bin文件在 arch/arm/boot/zimage-dtd目录下 

3.4 重新生成boot.img

$ export TARGET_PREBUILT_KERNEL=$your_kernel_path/arch/arm/boot/zImage-dtb
$ make bootimage


4、编译安卓

在安卓源码根目录下输入make即可编译,剩下就是漫长的等待....


5、烧录到真机

$ adb reboot bootloader
$ fastboot -w flashall


6、模拟器运行
$ ./usr/local/android/android-4.4.4_r1/out/host/linux-x86/bin/emulator -kernel /usr/local/android/android-4.4.4_r1/prebuilts/qemu-kernel/arm/kernel-qemu -sysdir /usr/local/android/android-4.4.4_r1/out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img


如果报qemu: could not load initrd 'ramdisk.img'是权限的问题,cd到out/target/product/generic目录下,执行
$ chmod -R 777 *

没有问题的话,就看到了熟悉的画面,嘎嘎。

为nexus5编译ubuntu14.04TLSx64(android4.4.4 r1+kernel)


单独编译image

make systemimage

全编译image

make snod

刷img

adb reboot bootloader

fastboot flash boot newboot.img

fastboot reboot


本文永久更新地址:http://www.linuxdiyf.com/linux/17534.html