费了将近一周的时间,Android源码和对应Freerunner上的源码才下载下来。上周根本不懂repo,也不知道下载中的具体状态,只知道一直在下,但遇到网络中断,重新启动就不知道是继续还是重新开始了。这周,大概了解了manifest.xml的作用,也对下载过程有了一个了解。就是这样也下载了两天一夜,在宿舍也用同学的本下载,结果慢的要死,下了两天也只下了一半不到,尤其是经常会出现错误。不过那句循环语句还是很给力,还算比较幸运,今早上一看,台式机这边下载成功了,真是幸运。
下载完后,一定要先备份。
最初我是想在Fedora下进行make文件系统,但Fedora上还没有装相应的编译环境,尤其是JDK1.5,因此首先就安装它。在sun网站上下载了jdk.1_5_0_22-linux-i586-rpm.bin,执行./jdk.1_5_0_22-linux-i586-rpm.bin后,在/etc/profile中增加环境变量:
export JAVA_HOME=/usr/java/jdk1.5.0_22
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.:/usr/java/jdk1.5.0_22/lib:/usr/java/jdk1.5.0_22/jre/lib:$CLASSPATH
之后进行注销后重新登录,输入java -version会返回对应的java版本则jdk安装成功。(网上说JDK1.6不行,因此选择的是jdk1.5)
安装完JDK后,再安装其他的编译环境,如:flex,bison,gperf,python,valgrind,curl,git,build-essential等,用yum安装ncurses-devel libX11-devel.i686 readline-devel,但是libsdl-dev,libesd0-dev,libwxgtk2.6-dev利用yum无法找到,因此跳过。
进入文件系统的根目录进行make。
总是报错,可能是由于编译环境装的有问题,不知道怎么解决,网上关于Fedora编译环境的安装的相关资料也不能解决问题,并且google官方提供的是ubuntu下的安装过程,幸好还有一个ubuntu的虚拟机,直接进入ubuntu的环境进行make。
进入ubuntu后,仍然面临编译环境的安装,除了JDK外,直接运行apt-get install -y git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev即可,这倒是方便。在安装jdk1.5时,由于ubuntu下不能安装rpm软件包,将rpm转换为deb包失败,因此就直接在/usr中新建java文件夹,将jdk.1_5_0_22-linux-i586.bin考入java文件夹后运行./jdk.1_5_0_22-linux-i586.bin,将jdk安装到此处,再添加环境变量即可。(注:jdk.1_5_0_22-linux-i586.bin与jdk.1_5_0_22-linux-i586-rpm.bin的区别就在于运行后者的时候,会固定将软件包安装在/usr/java文件夹下,而前者需要自己设定安装位置,也就是需要自己创建java文件夹,并在java文件夹下操作)。
编译环境安装完成,进入文件系统根目录进行make。
出现以下几个问题:
1、symbol lookup error: /usr/lib/libmpfr.so.4: undefined symbol: __gmp_get_memory_functions 并停止编译
解决方法:之前的gmp版本是4.1.4,直接编译安装4.3.0的版本(安装过程:下载gmp-4.3.0.tar.bz2,将其解压后运 行./configure;make;make install即可)。不知道方法对不对,但好像解决了上面的问题。
2、出现lzo/lzo1x.h: No such file or directory和external/mtd-utils/mtd-utils/compr_lzo.c:29: fatal error: lzo/lzo1x.h: No such file or directory compilation terminated的问题,并停止编译
解决方法:apt-get install liblzo2-dev,在网上进行的搜索,也没有具体答案,安装后编译也不再出错。
3、"mkimage" command not found 并停止编译
解决方法:从ftp://ftp.koansoftware.com/public/linux/mkimage/下载mkimage二进制文件,将其添加到/usr/bin。之后在进行 文件系统的make,通过。
目前文件系统还在编译过程中,分析造成上面问题的原因应该是编译环境没有装好,这可能涉及到一开始装ubuntu系统时有些软件包就没有装上,之后要在同学的ubuntu上试下,感觉如果正常按照教程安装编译环境的话,不应该出现上面三个问题。
参考资料:
1、jdk1.5的安装:http://www.linuxdiyf.com/viewarticle.php?id=5992 http://wenson.javaeye.com/blog/65292
2、Fedora13下编译android:http://kongweile.javaeye.com/blog/770377
3、ubuntu下编译环境的安装:http://zhanglibin1986.javaeye.com/blog/778219
4、关于mkimage:http://www.quickembeddedtips.com/resolving-mkimage-command-not-found-u-boot-images-will-not-be-built-error
PS:现在还在make过程中,上面的内容主要是做一下记录方便以后参考,如果接下来make出错,会继续贴上解决方法。
万里长征的第一步已经走出去了,加油。