中 深度剖析E680G开发三.移植OPIE操作系统-交叉编译Qte

一、前言

虽然是E680系列的开发环境,其实就是嵌入式方面的知识 。在上文详细了解了
E680g系统结构,图形化发展历程,到这篇文章就要实实在在去做了 。
最早移植成功的是一位外国人,我也是通过阅读他的文章了解到OPIE的移植过
程,不过他写的文章比较简练,接受起来比较困难 。下面是英文原文:
http://marcus.bluetroll.se/e680/
二、重要提示
为了方便更好的理解本文,提供下面链结 。
E680应用开发全系列的文章地址:http://blog.csdn.net/liwei_cmg
文章相关的重要资源的下载地址:http://play.younet.com/view.php?tid=18578
三、移植OPIE操作系统的思路

我们前面提到OPIE基于标准的Qte/Qtopia,Motorola的E680系列也是基于Qte的,
但这两者会有所不同,具体什么不同我们也很难得知 。Motorola目前仅开放了E680
系列的Linux内核代码,而Qte和上层的ezx图形框架却没有公开发布 。这一点着实让
人非常之不爽 。所以我们在移植OPIE时,需要编译一下标准Qte的Lib库,然后使用
这个Lib库,再交叉编译OPIE 。
移植OPIE操作系统本身可能意义并不大,但借此可以深入操作系统内部去完成
Linux KernelQteOPIE 的整体认识,要知道这些是全部开放源码的 。
在《深度剖析E680G开发一.所谓的交叉编译环境》中所介绍的开发图形化程序
的方法,是使用的A760系列的SDK,其实就是把A760的头文件复制过来,再加上E680
本身的Lib文件拼凑而成 。(本文的资源文件中提供了这个SDK的英文文档) 。这固然
也是目前为止比较好的另一种开发方法 。
四、构造交叉编译环境
在前面已提供了很简便的交叉编译环境构造方法,为了更好的进一步理解交叉
编译环境的构造方法,我们结合标准的crosstool再次构建编译环境 。
1.下载crosstool(搭建交叉编译环境的工具) 。如下网址是两个不同版本,其实
用哪个都是差不多的,细节内容可以访问http://kegel.com/crosstool/ 。这篇使用
的是crosstool-0.28-rc37.tar.gz 。root
http://kegel.com/crosstool/crosstool-0.42.tar.gz
http://kegel.com/crosstool/crosstool-0.28-rc37.tar.gz

2.在Linux下或者虚拟机Linux下解压缩,为了方便目录管理,我们使用/home
/gcc/toolchain目录,解压缩crosstool-0.28-rc37.tar.gz 。
tar zxvf crosstool-0.28-rc37.tar.gz 。

3.在crosstool-0.28-rc37文件夹下主要有以下几类文件:

arm.dat
arm-iwmmxt.dat
i686.dat
...

arm.config
i686.config
...

打开一看,显然是指定运行环境的指令集和一些配置参数 。对E680系列只需要
使用ARM相关的,其他的无视 。


gcc-3.4.0-glibc-2.1.3.dat
gcc-3.4.0-glibc-2.2.5.dat
...

这一类自然是编译GCC的版本参数,查看内容可知,其限定了binutils,gcc,
glibc和linux kernel的版本 。这些内容含义在《E680G开发一》已做了说明 。

注意:我在使用ezx-cross工具进行交叉编译时,出现了一些错误,是关于glic
的,不过并未影响使用 。我在RedHat中gcc的版本是3.3.2,ezx交叉编译限定
的是gcc-3.3.6,我怀疑与这个版本有关,具体原因还不能证实 。后来用
crosstool-0.28-rc37编译,使用了gcc-3.3.2,编译通过且没有发现任何问题 。

demo-arm.sh
demo-arm-iwmmxt.sh
demo-i686.sh
...

这些则是编译交叉编译环境的脚本了 。

4.下载本文章相关的资源文件toolchain.rar,解压缩将对应内容复制到
crosstool-0.28-rc37文件夹下 。里面只有三个文件:

gcc-3.3.2-glibc-2.3.2.dat
arm.dat
arm.sh

gcc-3.3.2-glibc-2.3.2.dat文件把限定的Linux内核版本从原来的linux-2.6.8
修改为linux-2.4.20,推测之所以进行这个修改是因为原来的版本组合存在兼

推荐阅读