pandaboard ES学习之旅——4 Android源代码下载与编译

4 Android源代码下载与编译

TIP1linaro提供的android源代码是包含ubootLinux kernelandroid源码的,一次下载即可用。

TIP2:从http://releases.linaro.org/12.10/android/leb-panda/下载到的Linux kernelandroid源码版本分布是kernel 3.2android 4.1.2

4.1 准备工作

参考http://blog.csdn.net/luoshengyang/article/details/6559955

 

4.2 下载源码并编译

首先,直接借用linaro下载编译脚本完成代码下载与编译过程。

http://releases.linaro.org/12.10/android/leb-panda/下载linaro_android_build_cmds.sh

linaro_android_build_cmds.sh脚本实现的功能是:

1、  download the repo tool for android下载repo工具。

2、  download the android code下载linaro版本的安卓源代码。

3、  download the toolchain to build with下载交叉工具链。

4、  build the code编译源代码。

 

运行脚本即可完成代码下载与编译。(注:此过程也包括自动编译ubootLinux Kernel源码

参考网址:

https://android-build.linaro.org/builds/~linaro-android/panda-ics-gcc47-omapzoom-stable-blob/

 

其次,熟悉之后可以参照脚本分步下载与编译。

参照脚本简化的编译方法是:

1、  第一次在服务器中编译时,先把源码clean,避免下载到的源码出现文件冲突等问题

root@fwtdev2:/data/smbshare/richard/source_code/android#make clean

 

2、  指定文件生成路径与交叉工具链路径

root@fwtdev2:/data/smbshare/richard/source_code/android#export TARGET_PRODUCT=pandaboard

 

root@fwtdev2:/data/smbshare/richard/source_code/android#exportTARGET_TOOLS_PREFIX=android-toolchain-eabi/bin/arm-linux-androideabi-

 

3、  运行环境配置脚本

root@fwtdev2:/data/smbshare/richard/source_code/android#./build/envsetup.sh

 

4、  执行编译命令依次为boot/system/userdata(boot/system/userdata可分开单独执行;-j4表示执行4个线程进行并行编译,速度比较快,也可以去掉)

root@fwtdev2:/data/smbshare/richard/source_code/android#make boottarball #说明:boot编译时最好不要带参数-j4进行编译,容易报错。

root@fwtdev2:/data/smbshare/richard/source_code/android#make –j4 systemtarball #说明:编译不过时可以尝试不带参数-j4进行编译,ubuntu下编译android4.1.2很容易出现编译问题,目前原因还未查明。

root@fwtdev2:/data/smbshare/richard/source_code/android#make –j4 userdatatarball  #说明:编译不过时可以尝试不带参数-j4进行编译,ubuntu下编译android4.1.2很容易出现编译问题,目前原因还未查明。

 

4.3 问题

1、出现的问题:下载android源码的过程中,repo sync出现了error: Exited sync dueto gc errors,原因是git版本较旧,需更新git>=1.7.2版本

 

解决方法:在Ubuntu 10.04 LTS解决操作步骤如下:

sudo add-apt-repository ppa:git-core/ppa

sudo apt-get update

sudo apt-get install git

 

2、服务器swap过小的问题

会导致有时出现如下打印:

注意:某些输入文件使用或覆盖了已过时的 API

注意:要了解详细信息,请使用-Xlint:deprecation重新编译。

注意:某些输入文件使用了未经检查或不安全的操作。

注意:要了解详细信息,请使用-Xlint:unchecked重新编译

有时出现直接退出编译的现象,编译错误不稳定。

 

解决方法:

分析发现Ubuntu服务器SWAP分区只有10G,而最好>16G。

参考网址:http://bbs.189works.com/thread-42793-1-1.html

加大SWAP分区变为20G,

方法:http://www.cnblogs.com/willsun8023/archive/2011/03/19/1988589.html

然后重新执行./linaro_android_build_cmds.sh脚本,编译ok

 

4.4 生成的映像

./out/target/product/panda/boot.tar.bz2

./out/target/product/panda/userdata.tar.bz2

./out/target/product/panda/system.tar.bz2

posted @ 2012-11-07 17:15  richard.hmm  阅读(468)  评论(0编辑  收藏  举报