Qt/Embedded是Qt的面向嵌入式应用的简化版本,它包括一组完备的GUI类、操作系统封装、数据结构类、功能类和组合类。大部分Qt的应用程序可以经过简单的编译与重设窗口大小移植到Qt/Embedded。
Qtopia是基于QT/Embedded开发的一个嵌入式的窗口系统和应用程序集,如地址本、图像浏览、Media播放器等,还包括娱乐和配置工具,广泛用于PDA等掌上设备。Qtopia平台由Qtopia 库(Qt/E,libqpe,libqtopia1,qtopiapim)和Qtopia server/laucher组成。Qtopia server/laucher是控制窗口系统、进程间通信、发起所有应用和其他核心任务的主要服务程序。
(2) Qt/Embedded和Qtopia的交叉编译与运行
整个GUI系统的构建需要对Qt/Embedded、Qtopia依次分别编链,然后有机地整合在一起。Qt/Embedded为Qtopia提供了底层支持,GUI系统的图形库窗口组建都由Qt/Embedded实现。
在构建GUI时用于Qt开发的典型工具如下:
- tmake:跨平台的Makefile生成器。
- moc:用于Qt C++扩展的metra-object编译器。
- uic:从XML文件生成代码的用户界面编译器。
- designer:用于设计窗口组建的应用程序。
Qtopia的开发工具包SDK(Software Development Kit)是Qtopia开发环境的核心部分,编译后得到创建应用程序所需的软件包如下:
- qvfb(virtual frame buffer):X窗口用来运行和测试Qtopia应用程序的系统程序。
- qpe(Qtopia executable):用来处理所有的用户程序界面[2,5]。
由于我们使用的是ARM CPU,因此需要对Qt/Embedded和Qtopia开发工具包进行交叉编译。本文使用arm-linux-gcc-3.3.2来建立交叉编译环境。为了对Qt/Embedded和Qtopia进行交叉编译,需要使用如下的源码树:
- tmake-1.13.tar.gz:用来得到tmake工具。
- qt-embedded-2.3.7.tar.gz:Qt的嵌入式版本。
- qt-x11-2.3.2.tar.gz:Qt的X11版本。
- qtopia-free-1.7.0.tar.gz:官方网站提供的Qtopia免费版。
- e2fsprogs-1.38.tar.gz:为了得到qtopia所需的uuid.h和libuuid.so。
假设将上述源码树放在同一目录下,例如:/root/qtopia,并依次解压,然后进行编译,步骤如下:
①设定tmake的环境变量如下:
export TMAKEPATH=/root/qtopia/tmake-1.13/lib/qws/linux-arm-g++
此处指定了tmake在生成Makefile时使用arm交叉编译。
②编译qt-x11,其目的是生成moc、uic、qvfb、designer,并将它们放在qt-embedded\bin目录下。
③配置qt-embedded编译选项,命令为:
./configure -platform linux-arm-g++ -qconfig qpe -qvfb -depths 4,8,16,32.
此处-platform linux-arm-g++表示在arm平台上进行交叉编译;-qconfig local表示使用src/tools/qconfig-local.h;-depths 4,8,16,32表示需要qt支持的显示颜色深度。
④使用make命令编译qt-embedded,用来生成Qt库(libqte.so)。
⑤配置并交叉编译Qtopia,生成应用程序以及桌面环境。
|