wake awake区别:Qtopia 应用程序编译及仿真

来源:百度文库 编辑:中财网 时间:2024/04/29 03:11:17
一、编译过程
解压qtopia-free-2.2.0.tar.gz,并将解压后的文件夹改名为qtopia-host.
编译方法以及参数设置可以查看顶层目录下的configure脚本文件的内容以及帮助信息.
#./configure -qte no-keypad -qpe pda
#make
#make install
qtopia2.2.0 版本自带了一些编译的环境变量的配置脚本,可以自动帮我们配置并编译qt-x11-2.x,qt-x11-3.x,qte-2.x 和qtopia-2.2.0,并进行目录结构的组织.
注意:
(1)qt-x11-2.x和qte-2.x是由源码包中的qt2目录编译得到; qt-x11-3.x是由dqt编译得到;
(2)在编译前进行configure 时可以采用-prefix 选项来指定安装时的image 目录(可参考QT官方相关文档:Build from Source以及running Qtopia).
二、make install 之后的image 文件夹
make install之后会在./qtopia/image下有image文件夹,即./qtopia/image/opt/Qtopia 目录.目录下有bin,lib,etc,apps...等等文件夹,实际上对应于要烧录进嵌入式文件系统的文件结构组织.
-> lib 下有运行qtopia 应用程序的全部库,如libqte,libqpe,libqtopia 等等,注意由于是主机版,没有编译触摸屏的库,因此这里没有libts.
-> bin下则是qtopia 应用程序,包括qpe,quicklaucher 等,另外还有clock,addressbook....
-> 用于在主机上仿真PDA 的qtopia 环境的startdemo 脚本也在这个bin 目录下,注意,在./qtopia/bin 下只有qpe,quicklaucher 等服务程序,而没有clock,addressbook...等应用程序,因此,如果象qtopia1.7.0一样设置环境变量,先运行qvfb再运行这个qpe,图标对应的应用程序是无法执行的.而startdemo 会自动调用qvfb 并且将image 下的qtopia 文件系统加载到qvfb 中运行.关于环境变量的设置,后面介绍.
三、在主机上开发并仿真qtopia 应用程序
开发应用程序所需要的:
(1)工具:qvfb(仿真),qmake(生成makefile),uic(编译ui 文件),designer(图形化界面设计工具)
(2)库:libqte, libqpe, libqtopia 等(与运行时所需库相同,因为是动态共享库)
(3)与库对应的头文件!
因此在开发qtopia 应用程序时,必须将这些环境变量设置好.可编写脚本setdevenv.sh 如下:
#!/bin/sh
TMAKEDIR=/opt/qtopia-host/tmake
TMAKEPATH=/opt/qtopia-host/tmake/lib/qws/linux-generic-g++
QMAKESPEC=qws/linux-generic-g++
QPEDIR=/opt/qtopia-host/qtopia/
QTDIR=/opt/qtopia-host/qt2/
PATH=$TMAKEDIR/bin:$QPEDIR/bin:$QTDIR/bin:$PATH
LD_LIBRARY_PATH=$QPEDIR/image/opt/Qtopia/lib:$QTDIR/lib:$LD_LIBRARY_PATH
export TMAKEDIR TMAKEPATH QTDIR QPEDIR PATH LD_LIBRARY_PATH QMAKESPEC
可以看到,所用的lib 虽然是设置为image下的lib,但image下却没有相关的头文件(没有include 文件夹,image 只提供程序运行支持,不提供源码编译以及链接支持),因此,必须另外设置QPEDIR和QTDIR,以在编译qtopia 应用程序时,可以找到相关的头文件.
在这个脚本的环境变量设置下,编译好qtopia应用程序后,可以使用startdemo来调用qvfb进行仿真,界面如下.

如果先启动qvfb,再启动qpe,虽然可以看到仿真界面,但其自带的一些应用程序是无法运行的,因为qpe加载QPEDIR指定的文件系统目录,而qtopia2.2.0的应用程序可执行文件放在image 下的bin 目录中;而startdemo 则总是加载image 下的Qtopia 文件系统.因此,使用startdemo仿真时,所开发的应用程序以及.desktop和图标等也要放在image下相应的目录下.
关于工具列表:
/opt/qtopia-host/qt2/bin/designer
/opt/qtopia-host/qt2/bin/qvfb
/opt/qtopia-host/qt2/bin/uic
/opt/qtopia-host/qtopia/bin/qmake (1.06c-Qtopia, Qt 3.2.1)
注意在/opt/qtopia-host/dqt/bin/下也有qmake(1.07a, Qt 3.3.5),不过两者版本不同.可以使用./qmake -v命令查看.
如果要使用qvfb 下启动qpe 的办法来仿真(好处是可以配置qvfb 窗口大小),则需要将
qvfb 链接到PATH 内,并编写环境变量配置脚本setsimenv.sh如下:
#!/bin/sh
QPEDIR=/opt/qtopia-host/qtopia/image/opt/Qtopia
QTDIR=$QPEDIR
PATH=$QPEDIR/bin:/opt/qtopia-host/qt2/bin:$PATH
LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH
export QPEDIR QTDIR PATH LD_LIBRARY_PATH
仿真时输入命令:
#qvfb&
#qpe&
仿真界面如下:

四、关于Qtopia2.2.0 的文件系统组织结构
'/'代表$QPEDIR
应用程序可执行文件example -> /bin/example
应用程序qtopia 桌面图标example.png -> /pics/example/example.png (32*32pixels)
应用程序.desktop文件 -> /apps/Applications/example.desktop
注意.desktop文件的格式与qtopia1.7.0版本稍有不同,例如clock.desktop:
[Translation]
File=QtopiaApplications
Context=Clock
[Desktop Entry]
Comment[]=A Clock Program #应用程序说明
Exec=clock #/bin下可执行文件名
Icon=Clock #/pics/clock/Clock.png,不用写后缀.png
Type=Application #qtopia 程序类型(Application/Game/Setting)
Name[]=Clock #桌面图标下显示的名字
五、Qtopia 应用程序在主机上仿真运行
如果使用上面的setsimenv.sh进行环境变量的设置,可以有两种方式进行仿真:
(1)先启动qvfb:#qvfb&
再将应用程序example作为qte服务程序运行:#./example -qws
(2)将应用程序example 作为应用程序添加到qtopia 相关目录(包括可执行文件,图标,.desktop文件),然后启动qvfb再启动qpe来加载qtopia桌面环境,点击example桌面图标运行程序.也可以使用startdemo进行加载.
如果使用上面的setdevenv.sh进行环境变量的设置,在第二种方法中,只能用startdemo 加载.