Qt-4.7.2及QtEmbedded-4.7.2 在ubuntu 11.10下的安装

来源:互联网 发布:天刀捏脸数据男五毒 编辑:程序博客网 时间:2024/06/04 01:22

环境:ubuntu11.10Linuxversion 3.0.0-20-generic

Qt源码包:qt-everywhere-opensource-src-4.7.2.tar.gzQT-creater使用qt-creator-linux-x86-opensource-2.1.0.bin,这两个安装包都可在QtProject上下载

主要参考:博客http://blog.chinaunix.net/uid-25652733-id-291521.html,我是在参考他的博客进行安装时出现问题后才想到把我的安装过程记录下来,供大家参考


.Qt Creator的安装

首先检查下ubuntu是否已经有安装好了的g++,在终端中执行sudoapt-get install g++,如果没有,后面是无法进行桌面版qt应用程序编译的。

在自己的家目录下建一个工作目录~/QT/,把下载好的qt-creator-linux-x86-opensource-2.1.0.bin拷贝到~/QT/qt-creator目录中,先添加属性成可执行文件

$chmod +x qt-creator-linux-x86-opensource-2.1.0.bin

然后安装

$./qt-creator-linux-x86-opensource-2.1.0.bin

一路next即可,安装完成后桌面生成QtCreator图标。

注意:安装过程中,有一个ExternalDependencies的界面会提示使用Qt需要安装的一些文件,我没管我的ubuntu是不是已经装了还是没有(大多数好像都装好了的),依次重新安装了一遍

$sudo apt-get install libglib2.0-dev libSM-dev libxrender-devlibfontconfig1-dev libxext-dev

$sudo apt-get install libgl-dev libglu-dev

$sudo apt-get install libgl1-mesa-dev libglu-dev


.Qt-4.7.2的安装

解压qt-everywhere-opensource-src-4.7.2.tar.gz,解压后生成~/QT/qt-everywhere-opensource-src-4.7.2,进入该目录

$./configure -qvfb(这里注意和原博客中的区别)

$make(这一步时间较长,我的电脑上用了有一个多小时)

$make install(这里可能需要sudomake install)

没有碰到错误,安装完成后生成/usr/local/Trolltech/Qt-4.7.2目录

然后,编译qvfbqvfbQtforX11下的虚拟的显示设备,进入~/QT/qt-everywhere-opensource-src-4.7.2/tools/qvfb目录

$ ~/QT/qt-everywhere-opensource-src-4.7.2/bin/qmake -project

$ ~/QT/qt-everywhere-opensource-src-4.7.2/bin/qmake

$ make

执行完成后会在该目录下生成qvfb可执行文件,运行该程序会出现窗口,这就是虚拟的显示设备,将该文件复制到/usr/sbin目录下,需要时在终端输入qvfb命令即可。

注意:在编译qvfb过程中若出现错误,可依次尝试参考以下方法解决后,再qmake-project,qmake,make

1)复制~QT/qt-everywhere-opensource-src-4.7.2/tools/shared/deviceskin目录下的deviceskin.cppdeviceskin.h文件至~QT/qt-everywhere-opensource-src-4.7.2/tools/qvfb目录下,修改该目录下Makefile文件中LIBS= $(SUBLIBS)  -L/home/qt-everywhere-opensource-src-4.7.2/lib-lQtGui -L/home/qt-everywhere-opensource-src-4.7.2/lib -lQtNetwork-lQtCore –lpthread为:LIBS= $(SUBLIBS)  -L/home/qt-everywhere-opensource-src-4.7.2/lib-lQtGui -lXtst-L/home/qt-everywhere-opensource-src-4.7.2/lib-lQtNetwork -lQtCore –lpthread

2)也可能还需要安装如下库

$sudo apt-get install libpng-dev

$sudo apt-get install libglui-dev

$sudo apt-get install xorg-dev



.QtEmbedded-4.7.2的安装

删除上一步骤中生成的~/QT/qt-everywhere-opensource-src-4.7.2目录,重新解压~/QT/qt-everywhere-opensource-src-4.7.2.tar.gz成该目录,或在原~/QT/qt-everywhere-opensource-src-4.7.2目录下先

$make confclean

然后,同上一步相似

$./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb

$make

$makeinstall

安装完成后在/usr/local/Trolltech/下生成QtEmbedded-4.7.2文件夹。



.QtCreator配置

启动QtCreator菜单栏Tools—Options…打开Options窗口。在Options界面左侧,点击Qt4—>QtVersions右侧显示QtVersions设置界面。在QtVersions界面中点击那个蓝色的“+”号图标,在下方VersionName:文本框内输入Qt的版本名,可以随便填,能区分各个版本即可(如x11版取Qt-4.7.2-x11embedded版取QtEmbedded-4.7.2),单击QmakeLocation:右侧Browse…按钮,在弹出的“SelectQMakeExecutable”窗口中找到对应版本的qmake程序(按照我前面安装的,x11版路径:/usr/local/Trolltech/Qt-4.7.2/bin/qmakeembedded版路径:/usr/local/Trolltech/QtEmbedded-4.7.2/bin/qmake),单击打开,回到QtVersions界面。单击DebuggingHelper:右侧Rebuild按钮,等待片刻,看到DebuggingHelper:后出现一个绿色的“√”即可。同理可以完成其他版本的添加。添加完毕,单击OK按钮关闭Options窗口。到此,Qt-creator配置完毕。



.helloworld程序测试

1. x11桌面下编译调试新建:其他项目---->空的Qt项目----->项目名称为helloworldQt版本选择Qt-4.7.2-x11,完成。------>向项目中添加C++C++源文件,名称为main.cpp,其他默认---->完成。----->main.cpp文件中拷入代码:

#include<QApplication>

#include <QLabel>

#include <QDialog>

#include <QTextCodec>

int main(intargc,char* argv[])

{

QApplicationa(argc,argv);

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

QDialog w;

w.resize(320,240);

QLabel label(&w);

label.move(100,100);

label.setText(QObject::tr("helloworld你好Qt"));

w.show();

return a.exec();

}

保存,运行,可以看到helloworld的运行窗口,证明在x11下运行成功。

2. QtEmbedded编译测试:在1helloworld工程左边栏中选择“项目”,“构建设置”中“Qt版本”选择QtEmbedded-4.7.2,“运行设置”里添加参数“-qws”,回到“编辑”界面,先清理helloworld项目,再重新构建。命令行中输入$qvfb打开qvfb,然后Qt中点击运行,即可在qvfb窗口中看到helloworld界面,运行成功。



.总结

我按原博客里的安装步骤,在他的第三步中qvfb无法编译成功,会报:#errorqvfb must be compiled with the Qt for X11 package,查看报错的地方,会发现是由于定义了Q_WS_QWS这个宏造成的(应该是在configure的时候定义的),再去google这个宏,发现其是在Qtfor Embedded Linux下才会被定义的,而X11平台下,应该定义的是Q_WS_X11这个宏。

qvfbX11平台下的模拟器,所以必须要用X11平台的qt版本来编译,但qvfb本身是用来给QtEmbedded编译出的程序模拟开发板环境运行使用的,所以用QtEmbedded编译出的helloworld又要在qvfb中运行。而原作者可能是没有交代清楚,我按照他编译桌面版本Qt时的configure参数,无法编译出qvfb,继而后续示例程序也无法运行。

最后,自己也是刚接触Qt,所写内容是全部安装好了以后,回头又来写的,安装和测试步骤等等我没有再次验证过,可能存在小的问题,整体原理包括概念上是按自己的理解来写的,仅供参考。



Andy-Binary

donganwu0928@163.com