Qtopia 2.2.0主机版的编译与应用程序的仿真
2012-06-02
黄振华
标签: Qtopia

一、编译过程

解压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 加载.

可能会用到的工具/仪表
相关文章
推荐文章
热门文章
章节目录
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号