Qt开发系列1——Qt环境搭建
Qt环境搭建
本文给出linux下Qt环境搭建的具体过程,尤其是嵌入式Qt的环境搭建;然后结合一个例子给出编译,运行Qt程序的方法。
2011-02-19 19:53:09
主要内容:
- Qt版本简介
- 需要的软件包
- 安装软件包
- 配置环境
- 工作环境简介
- 其他
Qt版本简介
先看看Qt的各个版本简介:
1.什么是QT
Qt是一个完整的C++应用程序开发框架。它包含一个类库,和用于跨平台开发及国际化的工具。Qt API在所有支持的平台上都是相同的,Qt工具在这些平台上的使用方式也一致, 因而Qt应用的开发和部署与平台无关。
2.什么是Qtopia
Qtopia 是一个面向嵌入式Linux的全方位应用程序开发平台,同时也是用于基于Linux的PDA(个人数字助理),智能电话(Smartphone)以及其他移动设备的用户界面。简单地说,Qtopia实质上是一组关于PDA和智能电话的应用程序结合,如果需要开发这类产品可以在这组程序的基础上迅速构建出 PDA或者智能电话。Qtopia实质上依赖Qt/Embedded。
3.什么是Qt/Embedded
Qt/Embedded 是一个完整的自包含GUI和基于Linux的嵌入式平台开发工具。这个开发工具的名字好像最容易混淆,当然Qt/Embedded是最熟悉的名字,好像 Qtopia Core说的也是它。最近,奇趣公司又该名字了,它的新名字叫做qt-embedded-linux-xxxx,看来这个Qt/Embedded的马甲还很多哈。
需要的软件包
源码包
qt-x11-opensource-src-4.5.0.tar.bz2
qt-embedded-linux-opensource-src-4.5.0.tar.bz2
下载地址:ftp://ftp.qtsoftware.com/qt/source/
安装软件包
1. 编译及安装qt-x11-opensource-src-4.5.0
$tar xjvf qt-x11-opensource-src-4.5.0.tar.bz2
$cd qt-x11-opensource-src-4.5.0
$sudo ./configure
$sudo make
$sudo make install
2. 编译及安装qt-embedded-linux-opensource-src-4.5.0为x86版本
$tar xjvf qt-embedded-linux-opensource-src-4.5.0.tar.bz2
$mv qt-embedded-linux-opensource-src-4.5.0 qt-embedded-linux-opensource-src-4.5.0-x86
$cd qt-embedded-linux-opensource-src-4.5.0-x86
$sudo ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-x86 -embedded x86 -qvfb
$sudo make
$sudo make install
3. 编译及安装qt-embedded-linux-opensource-src-4.5.0为arm版本
$tar xjvf qt-embedded-linux-opensource-src-4.5.0.tar.bz2
$mv qt-embedded-linux-opensource-src-4.5.0 qt-embedded-linux-opensource-src-4.5.0-arm
$cd qt-embedded-linux-opensource-src-4.5.0-arm
$sudo ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-arm -embedded arm
$sudo make
$sudo make install
4. 编译安装qvfb工具
$cd qt-x11-opensource-src-4.5.0
$cd /tools/qvfb
$sudo make
$sudo cp ../..bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin
配置环境
(export?)
1. qt-x11
$vi setenv_x11.sh
添加如下内容:
##########
QTDIR=/usr/local/Trolltech/Qt-4.5.0
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH MANPATH LD_LIBRARY_PATH
##########
添加之后保存退出.移到/usr/local/Trolltech/Qt-4.5.0中。
2. qt-embedded-x86
$vi setenv_embeded_x86.sh
添加如下内容:
##########
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-x86
PATH=$QTEDIR/bin:$PATH
LD_LIBRARY_PATH=$QTEDIR/lib:$LD_LIBRARY_PATH
export QTEDIR PATH LD_LIBRARY_PATH
##########
添加之后保存退出.移到/usr/local/Trolltech/QtEmbedded-4.5.0-x86中。
3. qt-embedded-arm
$vi setenv_embeded_arm.sh
添加如下内容:
##########
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-arm
PATH=$QTEDIR/bin:$PATH
LD_LIBRARY_PATH=$QTEDIR/lib:$LD_LIBRARY_PATH
export QTEDIR PATH LD_LIBRARY_PATH
##########
添加之后保存退出.移到/usr/local/Trolltech/QtEmbedded-4.5.0-arm中。
4. 测试环境
$cd /usr/local/Trolltech/QtEmbedded-4.5.0-x86
$source setenv.sh
$cd /usr/local/Trolltech/QtEmbedded-4.5.0-x86/demos/books
$qvfb -width 640 -height 480 &
$./books -qws
说明:我们在使用上述种环境之一时,分别运行对应的脚本即可,比如我们要用qt-x11:
$cd /usr/local/Trolltech/Qt-4.5.0
$source setenv.sh
然后就可以用qmake designer等工具了.
工作环境简介
1. 关于编译及安装qt-x11-opensource-src-4.5.0
这里,安装的是桌面上开发环境的qt库,用于pc机器上qt程序的开发。
2. 关于编译及安装qt-embedded-linux-opensource-src-4.5.0为x86版本
这里,安装的是x86系列嵌入式板子上开发环境的qt库,用于x86系列嵌入式机器上qt程序的开发。开发出来的程序pc上面编译之后,只能在x86体系板子上面运行,如果想要在机器上模拟运行,需要用qvfb(虚拟framebuffer).
3. 关于编译及安装qt-embedded-linux-opensource-src-4.5.0为arm版本
这里,安装的是arm系列嵌入式板子上开发环境的qt库,用于arm系列嵌入式机器上qt程序的开发。开发出来的程序pc上面编译之后,只能在arm体系板子上面运行,如果想要在机器上模拟运行,用qvfb(虚拟framebuffer)也是不行的,qvfb只是模拟x86体系的.这时需要:
- 首先,将程序用qt-embedded-linux-opensource-src-4.5.0-x86编译。
- 其次,编译好的程序在qvfb上面模拟运行。
- 再次,运行成功后再用qt-embedded-linux-opensource-src-4.5.0-x86编译。
- 最后,将成品复制到arm板子上即可运行。
4. 关于编译安装qvfb工具
qvfb是虚拟framebuffer,qvfb只能执行x86架构的应用程序,所以需要让qt-embedded生成关于x86的库和其他文件。
前面编译安装qt的三个库之后,还有qvfb没有编译,需要到qt-x11-opensource-src-4.5.0中重新编译,这会在qt-x11-opensource-src-4.5.0/bin下生成qvfb,我们将它copy至/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin下即可。
其他
错误情况
注意:如果出现错误,出错信息可能为:
Error opening framebuffer device /dev/fb0QScreenLinuxFb::connect: No such file or directory
这种情况发生最多的是编译Qt-Embedded的x86版本,希望在qvfb上运行应用时使用者在第一步运行qvfb后第二步运行./myapp -qws现以上的提示错误。
原因是Qt-Embedded在查找系统的显示设备时,默认去寻找LinuxFb,也即Linux的/dev/fb0设备,但是如果Qt- Embedded安装了其它显示设备,比如qvfb,则可以在qvfb上显示,但是需要一个插件(或者说驱动,可能会和设备驱动混淆),使Qt- Embedded能使用qvfb。
为了作到这一点,需要在编译Qt-Embedded时的configure命令加上如下选项
$./configure -plugin-gfx-qvfb -plugin-kbd-qvfb -plugin-mouse-qvfb
或
$./configure -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
如果,你不想重新编译Qt-Embedded,也可以单独编译qvfb的gfxdrivers,命令如下
$cd qt-embedded-linux-opensource-src-4.5.1/src/plugins/gfxdrivers/qvfb/$/usr/local/Trolltech/QtEmbedded-4.5.1/bin/qmake$ sudo make install
对应所在的路径,在大家的机器上可能不尽相同,领会意思就行
PC上Qt程序的运行
编写一个qt程序的全过程是:
写代码
-
执行
qmake -project
这一步生成一个.pro文件,描述了配置信息以及你的程序所包含的文件。
-
执行
qmake
这一步根据.pro文件生成Makefile
-
执行
make
这一步开始编译。
这里,如果想要添加程序安装路径的话,可以在.pro文件中添加如下语句:
target.path = /usr/local/myprogram
target.files = *.cpp qtDemo
unix:target.extra = ls && echo 1
INSTALLS += target
这样,执行make install之后,会把应该安装的文件(*.cpp和qtDemo文件)安装在target.path所指定的路径中。如果不指定target.files也会自动确定安装一些文件,默认是qtDemo;
另外,target.extra是自己定义的一些东西,这一行也可以省略,这一行的意思是说,在unix域中(防止到其他的平台上面不能用),执行install之前限制性extra所指定的命令ls && echo 1。
除了安装路径的对象target之外,还有文档路径的对象:documentation
qmake参考文档:
- http://doc.qt.nokia.com/4.5/qmake-environment-reference.html
- qmake的完整文档,参见:http://doc.qt.nokia.com/4.5/qmake-manual.html
- 或者通过qt文档主页:http://doc.qt.nokia.com/4.5/index.html 中的"All Tools->qmake"链接进入。
Ubuntu上面实践Qt的最简过程
qt内容很多,前面介绍的用源代码安装qt的方法有点麻烦,这里介绍搭建qt环境以及编写运行一个qt测试程序的最简步骤,假设系统是ubuntu, 过程如下:
1.安装qt库
$sudo apt-get install libqt4-dev
这里,120M左右,2m的带宽花费了不到半个小时的时间。
2.写源代码
$mkdir testQt
$cd $_
$vi main.cpp
代码如下:
#include
#include
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget window;
window.show();
return app.exec();
}
源代码没什么好解释的,自己看官方文档吧。参考:http://doc.qt.nokia.com/
3.编译运行
$qmake -project
$qmake
$make
$./testQt
至此为止。每一步的含义如下:
- qmake -project:读取源代码目录,生成一个testQt.pro文件,文件包含了将要编译的程序的选项(如调试选项,资源文件位置),以及源代码,头文件位置等。
- qmake:根据testQt.pro文件提供的信息,自动生成一个Makefile文件。
- make:读取Makefile文件信息,执行Makefile中的命令,真正实现编译,编译后生成可执行文件testQt.
- ./testQt:运行程序,这样会弹出一个空白的窗口。
更多内容
有待更新……
作者:QuietHeart
Email:[email protected]