一、编译过程 解压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 加载.
|