从头开始为BeagleBoard编译Android系统(2)

8.   生成MLO

编译x-loader以后需要将x-load.bin文件转换成MLO文件,使用的工具是signGP。

signGP这个工具可以在第一步下载的Devkit包里找到,在Tools/signGP目录中。将这个文件拷贝到Ubuntu的x-loader目录上,执行以下命令生成MLO文件

$ ./signGP ./x-load.bin

$ mv x-load.bin.ift MLO

9.   编译u-boot.bin:

进入TI_Android_GingerBread_2_3_4Sources下的u-boot目录

$ cd u-boot

注意,《DeveloperGuide》原文是$ cd u-boot-omap3,目录名不对

通过以下命令编译u-boot.bin

$ make CROSS_COMPILE=arm-eabi- distclean

$ make CROSS_COMPILE=arm-eabi- omap3_beagle_config

$ make CROSS_COMPILE=arm-eabi-

注意,使用的config是omap3_beagle_config

编译成功会在该目录找到u-boot.bin文件

10.  编译Linux 核心

进入TI_Android_GingerBread_2_3_4Sources下的kernel目录,通过以下命令编译uImage,执行前注意测试一下mkimage命令是否可以正常执行,该命令在生成uImage文件时要使用到。

$ make ARCH=arm CROSS_COMPILE=arm-eabi- distclean

$ make ARCH=arm CROSS_COMPILE=arm-eabi- omap3_beagle_android_defconfig

$ make ARCH=arm CROSS_COMPILE=arm-eabi- uImage

注意! 使用的config是omap3_beagle_android_defconfig

编译成功的话可以在kernel/arch/arm/boot目录找到uImage文件

11. 生成Android文件系统

进入TI_Android_GingerBread_2_3_4Sources目录,执行一下命令开始编译生成Android文件系统:

$ make TARGET_PRODUCT=beagleboard OMAPES=5.x -j8

注意你的BeagleBoard版本,如果是Beagleboard Rev Cx的话,要使用OMAPES=3.x选项,如果是Beagleboard XM A/B/C 则使用OMAPES=5.x。我的是beagleBoard XM C,所以使用OMAPES=5.x。

-j8选项是指定使用多少个CPU进行编译,如果你的Ubuntu只有一个CPU就不用这个参数了。

编译需要很长时间,请耐心等待。

如果编译过程中出现ld terminated with signal 7,ld terminated with signal 11的错误,特别是编译libwebcore.so 时出错,注意调整你的Ubuntu的硬盘空间和内存。我使用40G硬盘,2G内存编译通过。

编译成功后可以在out/target/product/beagleboard目录找到生成的文件系统。

12. 打包Android文件系统

编译完成后进入out/target/product/beagleboard目录,新建一个目录(本例是android_rootfs)将需要的文件拷贝进去,然后通过mktarball.sh命令将文件系统打包,命令如下:

$ cd out/target/product/beagleboard

$ mkdir android_rootfs

$ cp -r root/* android_rootfs

$ cp -r system android_rootfs

$ sudo ../../../../build/tools/mktarball.sh

../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2

所生成的是rootfs.tar.bz2文件。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23348.html