本文介绍的是Qt开发环境建立与Qtopia 虚拟平台,Qtopia包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。请看内容。
开发模式:
在宿主机RedHat上通过qvfb来模拟帧缓冲
开发完毕后使用qt-embedded重新编译后下载程序到ARM上运行(ARM上需要安装Qt)
开发所需软件:
- tmake-1.11.tar.gz //编译工具,如progen与tmake
- qtopia-free-1.7.0.tar.gz //QTE的桌面环境程序
- qt-embedded-2.3.7.tar.gz //提供qte的库
- qt-x11-2.3.2.tar.gz //为了生成相应的QT工具,如designer和qvfb等
- e2fsprogs-1.39 //解决configure时出现的问题
宿主机Qt的安装:
注:以下安装步骤在Redhat 9系统下测试通过,安装步骤参考了MagicARM2410平台实验手册。
在/zylinux下建立目录 x86-qtopia 所有的软件包都复制到该目录下
1.安装tmake
- tar xzvf tmake-1.11.tar.gz
- export TMAKEDIR=/zylinux/x86-qtopia/tmake-1.11
- export TMAKEPATH=/zylinux/x86-qtopia/tmake-1.11/lib/qws/linux-x86-g++
- export PATH=$PATH:/zylinux/x86-qtopia/tmake-1.11/bin/
Tmake配置文件:Tmake.conf
Tmake的模板:app.t 用于生成应用程序的Makefile
lib.t 用于生成库文件的Makefile
subdirs.t 用于创建编译子目录中程序的Makefile
2.安装Qt/X11
- tar xzvf qt-x11-2.3.2.tar.gz
- cd qt-2.3.2/
- export QTDIR=$PWD
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- ./configure -static -no-xft -no-opengl
- make
- make -C tools/qvfb
- mv tools/qvfb/qvfb bin
- cd ..
Qt的配置比较复杂 详细查看./configure --help
make -C tools/designer 图形设计器designer
3.解压Qtopia
- tar xzvf qtopia-free-1.7.0.tar.gz
- mv qtopia-free-1.7.0 qtopia
- export QPEDIR=$PWD/qtopia
- export PATH=$QPEDIR/bin:$PATH
4.安装Qt/Embeded
这里使用了QPE的配置文件
- tar xzvf qt-embedded-2.3.7.tar.gz
- cd qt-2.3.7
- export QTDIR=$PWD
- export QTEDIR=$QTDIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- cp ../qt-2.3.2/bin/uic $QTEDIR/bin
- cp $QPEDIR/src/qt/qconfig-qpe.h src/tools
- (echo yes; echo yes)|./configure -platform linux-x86-g++ -qconfig qpe -qvfb -depths 4,8,16,32
- (配置时设置qvfb: ./configure -qconfig -qvfb -depths 4,8,16,32)
- make sub-src //make -C src
- cd ..
5.安装Qtopia
- cd qtopia
- cd src
- ./configure -platform linux-x86-g++
(如果环境变量没设好,将会出现错误:
- global1.cpp:39:23: uuid/uuid.h: 没有那个文件或目录
- global1.cpp: In static member function `static QUuid Global::generateUuid()':
- global1.cpp:188: `::uuid_generate' undeclared (first use here)
- make[1]: *** [.obj/linux-generic-g++//global1.o] Error 1
- make[1]: Leaving directory `/root/x86-qtopia/qtopia-free-1.7.0/src/libraries/qtopia1'
- make: *** [libraries/qtopia1] Error 2
解决方法:安装 e2fsprogs-1.39
- tar zxvf e2fsprogs-1.39
- cd e2fsprogs-1.39
- ./configure -enable-elf-shlibs
- make
- make install lib/uuid/
问题一: 找不到 uuid.h
把e2fsprogs-1.39/lib/uuid 目录拷贝到 qtopia-free-1.7.0/include
问题二: 找不到 -luuid
把e2fsprogs-1.39/lib/uuid/libuuid.a 文件拷贝到 usr/lib 或者 qtopia-free-1.7.0/lib)
- make
- cd ../..
6.在PC机上运行QPE
- qvfb &
- qpe &
注:如果运行时找不到某些库,则需要设置库路径:
在/etc/ld.so.conf文件中增加Qt库的路径
- /zylinux/x86-qtopia/qt-2.3.7/lib
- /zylinux/x86-qtopia/qtopia/lib
添加完路径后,在/etc目录下以root身份执行ldconfig使Qt的库生效。
程序的运行方式:
- ./qvfb &
- /canvas –qws (一般调试时采用这种方式)
注意:QT默认显示窗口大小为240x320像素,指定其他窗口大小:
- qvfb -width 640 -height 480 &
#p#
7.将自己开发的安装在Qtopia中:
1. 在/x86-qtopia目录下建立文件夹hello,并编写
相应的程序,执行:
- make
编译完后程序生成在$QPEDIR/bin下
2. 设置配置文件hello.desktop并复制配置文件到
$PEDIR/apps/Applications下:
配置文件内容:
- [Desktop Entry]
- Comment=An Hello Demo.
- Exec=hello
- Icon=Hello
- Type=Application
- Name=Hello
执行命令:
- cp hello.desktop $PEDIR/apps/Applications
3. 执行程序:
- qvfb &
- qpe
4. 修改图标:
设计32*32的PNG图片放到<Qtopia>/pics/inline目
录下,然后用qembed转换
- qembed -images $QPEIDR/pics/inline/*.* >
- $QPEIDR/src/librabies/qtopia
配置脚本(以上前五步的完整安装,所有需要文件放在/zylinux/x86-qtopia下,执行./build):
- #!/bin/bash
- echo remove old dirs
- rm -rf tmake
- rm -rf qt
- rm -rf qt-x11
- rm -rf qtopia
- echo Unpack all packages
- tar xzvf tmake-1.11.tar.gz
- tar xzvf qt-embedded-2.3.7.tar.gz
- tar xzvf qt-x11-2.3.2.tar.gz
- tar xzvf qtopia-free-1.7.0.tar.gz
- echo rename
- mv tmake-1.11 tmake
- mv qtopia-free-1.7.0 qtopia
- mv qt-2.3.7 qt
- echo Start Install Qt-X11
- cd qt-2.3.2
- export QTDIR=$PWD
- echo yes|./configure -static -no-xft -no-opengl -no-sm
- make -C src/moc
- cp src/moc/moc bin
- make -C src
- make -C tools/designer
- make -C tools/qvfb
- cp tools/qvfb/qvfb bin
- strip bin/uic bin/moc bin/designer bin/qvfb
- #cp bin/uic $QTEDIR/bin
- cp bin/?* ../qt/bin
- cd ..
- #cp $QTDIR/bin/?* qt/bin
- mv qt-2.3.2 qt-x11
- echo Start Setting env-var
- export QTDIR=$PWD/qt
- export QTEDIR=$QTDIR
- export QPEDIR=$PWD/qtopia
- export TMAKEDIR=$PWD/tmake
- export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++
- export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- echo Start build Qt/Embedded
- cd qt
- make clean
- cp $QPEDIR/src/qt/qconfig-qpe.h src/tools
- (echo yes; echo yes)|./configure -platform linux-generic-g++ -qconfig qpe -qvfb -depths 16,24,32
- make -C src
- cd ..
- echo Start Build Qtopia
- cd qtopia/src
- ./configure -platform linux-generic-g++
- make
- echo OK
这样安装完后的安置路径为:
- qt-embedded-2.3.7.tar.gz /zylinux/x86-qtopia/qt
- qtopia-free-1.7.0.tar.gz /zylinux/x86-qtopia/qtopia
- qt-x11-2.3.2.tar.gz /zylinux/x86-qtopia/qt-x11
- tmake-1.11.tar.gz /zylinux/x86-qtopia/tmake
安装完毕,开发前需要导出环境变量:
- export QTDIR=$PWD/qt
- export QPEDIR=$PWD/qtopia
- export TMAKEDIR=$PWD/tmake
- export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++
- export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
小结:关于Qt开发环境建立与Qtopia 虚拟平台的内容介绍完了。对于Qtopia,它有三个把版本,分别是Qtopia 手机版、Qtopia PDA 版和Qtopia 消费电子产品平台。Qtopia 手机版: 面向嵌入式Linux 的Qtopia 手机版(Qtopia Phone) 是Qtopia 的一个自定义版本用于内存有限的智能手机和功能手机它的用户界面可自定义内存占用量低手机制造商使用它可以创建令人赞叹的图形用户界面从而令手机卓越超群Qtopia 手机版有两个版本键盘驱动和手写笔驱动。