Qt开发系列1——Qt环境搭建

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程序的全过程是:

  1. 写代码

  2. 执行 qmake -project

    这一步生成一个.pro文件,描述了配置信息以及你的程序所包含的文件。

  3. 执行 qmake

    这一步根据.pro文件生成Makefile

  4. 执行 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]

你可能感兴趣的:(Qt开发系列1——Qt环境搭建)