准备编译Android的系统内核和文件系统所需要用到的软件和文件。
-->Android4系统源代码包
-->arm-linux-gcc编译工具链
-->Fedora14系统
-->Linux3.08内核文件
-->make-3.81工具安装包
-->mktools压缩工具链
-->VMware10软件安装包
为了操作方便可以在/tmp目录下建立一个新的文件夹andorid,以后的操作都在这个文件夹下进行。
# cd /tmp
# mkdir android
# mv************** /tmp/android (***代表文件名,前后都有空格键隔开,多次重复这个命令将文件全部移到这个文件夹下)
cd android (进入创建的文件夹)
a) 安装gun make-3.81工具包
Fedora14系统原装的是3.82但是编译Android4需要用3.81替换掉3.82.
-->卸载make-3.82
# yum removemake
-->安装 make-3.81,首先进入文件所在目录,解压文件
# cd/tmp/android
# tar –xvzfmake-3.81.tar.tgz
-->将目录文件设置可执行权限ta
# chmod –R 755make-3.81
-->建立安装目录
# mkdirmake-build
-->进入安装目录
# cd make-build
-->执行配置文件
#../make-3.81/configure
-->在当前目录下先编译make-3.81
# sh build.sh
--> 安装
# ./make install
-->退出后重新登录,输入命令查看make-3.81是否安装成功,成功时的提示信息如下
# make -v
b) 安装arm-linux-gcc工具链
-->解压工具连的压缩文件:
# tar –xvzfarm-linux-gcc-4.5.1-v6-vfp-20120301.tgz –C/ (C后面有个空格,并且C是大写的)
执行该命令将把arm-linux-gcc安装到/opt/FriendlyARM/toolschain/4.5.1目录。
-->把编译器路径加入系统环境变量,运行命令:
# gedit /root/.bashrc
编辑/root/.bashrc文件,注意bashrc前面有一个“.”在最后一行添加内容:export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin,保存退出。
-->重新登录系统(不必重启机器,System→ Layout即可),使以上设置生效,在命令行输入
# arm-linux-gcc –v
出现以下信息说明交叉编译环境已经安装成功。
-->解压安装Android4内核源代码
#tar –xvzflinux-3.08-20140224.tgz
将创建一个linux-3.08的文件夹,里面包含了完整的内核源代码。
-->编译Android4的内核
#cd linux-3.0.8
#cpmini210_android_defconfig .config (注意config前面有个“.”)
然后可以执行make进行编译
# make
最后会在arch/arm/boot目录下生成zImage,就是编译好的内核文件。
-->将他复制到/tmp文件夹中,便可以在Windows中通过Samba访问了。
# cparch/arm/boot/zImage /tmp
如果提示权限不足可以在/tmp目录下执行命令
#sudo chmod 755zImage
修改成功后再复制到Windows中。a) 安装 ncurses和 gperf
-->使用yum命令安装ncurses,在网络连接正常的情况下:
# yum installncurese-devel
-->同样的方法安装gperf
# yum installgperf
b) 使用光盘安装zlib
-->方法和安装Vim工具相似
c) 修改updatedb.conf的权限,在安装过程中权限不足会提示错误,所以在这里提前修改。
# cd /etc
# sudo chmod 755 updatedb.conf
-->解压Android4源代码包在/tmp/android目录中执行
# cd/tmp/android
# tar –xvzfandroid-4.0.3_r1-fs-20140224.tar.gz.
将创建Android-4.0.3_r1目录。
-->编译Andorid4源代码
# cd android-4.0.3_r1
#./build-android
-->编译Android需要等待很长的时间,编译过程中会提示出现不同的错误,解决后重新回到该目录下继续编译即可。
# cd/tmp/android/android-4.0.3_r1
#./build-android
-->编译成功后,执行以下命令创建文件目录系统:
#./build-android
这个脚本会从我们编译完的Android中提取出我们需要的目标文件系统,最后会生成rootfs_dir目录,如图
要把目标文件系统全部写入开发板中,一半还需要先把目标文件系统目录支撑单个的映像文件以便烧写或者复制,Linux内核启动时,一般会根据命令行参数挂载不同格式的系统。
-->解压压缩文件
# cd /tmp/android
# tar –xvzf mktools-20120518.tag.gz –C /
以下执行步骤二选一
-->执行以下命令可以将上一节生成的Android文件系统创建成适用于SLC NAND Flash的yaffs2格式的映像文件,以便烧写到配备SLC NAND Flash的开发板中:
# cd /tmp/android/android-4.0.3_r1
# mkyaffs2image-128M rootfs_dir rootfs_andorid.img
-->执行以下命令可以将上一节生成的Android文件系统创建成适用于MLC2 NAND Flash的yaffs2的映像文件,以便烧写到配备MLC2 NAND Flash的开发板中:
# cd /tmp/android/android-4.0.3_r1
# mkyaffs2image-mlc2 rootfs_dir rootfs_andorid-mlc2.img
错误一:
target Dex: android.core.tests.libcore.package.org.no-core-tests-res
make:***[out/target/common/obj/APPS/android.core.tests.libcore.package.com.no-core-tests-res_intermediates/noproguard.classes-with-local.dex]已杀死
make: *** 正在等待未完成的任务....
解决方法:
主要原因是内存不够,解决办法可以是增加虚拟机的内存,或者是增加swap的大小。
VM10.0中虚拟机的最大内存好像是2G,仍不能满足要求,所以要求创建一个4G的交换分区,命令如下。
# dd if=/dev/zero of=/home/swapfile bs=1M count =4096 //创建交换分区文件
# mkswap /home/swapfile //建立SWAP文件系统
#swapon /home/swapfile //启用swap文件
如果需要可以设置每次开机自动启用SWAP交换分区,方法是在 /etc 目录下修改fstab文件,在其中添加一行:
swap /home/swapfile swap defaults 0 0