近期工作需要在Linux下用Qt进行C++开发,所以就在linux下尝试装QT开发环境。本人用的linux是CentOS 6.5。现在对安装过程做出总结。有两种安装方式,下面分别详述:

1 图形化安装

1.1 安装包的下载与获取

http://www.qt.io/download-open-source/#section-7链接下载。这个链接中分类罗列出了不同操作系统下的QT安装包。本人的操作系统是32
位的Linux,故我选择的Qt
5.4.1 for Linux 32-bit (546 MB)
 (info) 。

1.2 安装包的安装

下载完后,可以看到是后缀名为.run的文件,执行如下命令:

chmod +x   qt-opensource-linux-x86-5.4.1.run

为安装包赋予可执行权限。(说明:qt-opensource-linux-x86-5.4.1.run为我下载的qt安装包名,当前最新版本为5.4.1)

然后执行如下命令:

./qt-opensource-linux-x86-5.4.1.run

此时会弹出图形化的安装界面,之后的操作就跟windows下安装软件差不多了。需要说明的是:qt-opensource-linux-x86-5.4.1.run包中包含了qtcreator可视化的开发工具,在安装完后,找到安装目录下的Tools/QtCreator/bin目录下发现有qtcreator可执行文件,该文件就是Qt可视化的开发工具。

1.3 环境变量的配置

执行

   vi /etc/profile

在该文件中加入如下几行:

其中第1行为在1.2步骤中安装QT包时安装文件存放的目录,大家可以根据自己的安装路径来更改设置。

其中第2行将qtcreator可视化的开发工具存放的绝对路径加入到环境变量PATH中了。这样以后就可以在shell中直接执行qtcreator了。

其中第3行为安装QT包时安装文件中的lib库存放的目录,大家可以根据自己的安装路径来更改设置。执行如下命令

.  /etc/profile

注意: . 和 /etc/profile 有空格

或者:
source /etc/profile

或者

重启linux,以使上述配置生效

1.4 qtcreator配置

如果上述1.3步骤配置完后,在shell终端执行如下命令:

qtcreator

应该能弹出如下qtcreator可视化的开发界面。

如果没能弹出上述界面,请检查1.3步骤中环境变量是否设置正确。

在上述界面中,选择:“Tools->Options->Build & Run”,在弹出的界面中,看看qtcreator是否自动为你设置好了qmake,如果没有,请找到QT 包中sdk中的qmake的路径(一般该文件在本文1.2步骤提到的安装文件存放目录下的Qt5.4.1/5.4/gcc/bin目录下)将其加入。如下:

现在用qtcreator向导建立一个C++工程,如果弹出如下窗体证明安装成功
 1.5 注意事项
请确保qt的sdk和qtcreator版本的一致性,否则会出现很多诡异,难缠的问题。我当时因为这两个版本的不一致导致在qtcreator向导生成的QT工程中,在main函数的第一句代码QApplication a(argc, argv)就发生了如下的错误:
Signal received

The inferior stopped because it received a signal from the Operating System.

Signal name : SIGSEGV

Signal meaning : Segmentation fault.
当时找了好久都没找出来。查看qt的sdk的版本很容易,一般从其包的命名就可以看得出来,查看qtcreator版本,可以在qtcreator主界面的“help -> About Qt Creator”菜单弹出的对话框中可以看出,如下图所示:

可以看到版本一致

必须牢记qt的sdk版本是适用于当前你手头的qtcreator的,否则会出现很多诡异,难缠的问题。
2 源代码的安装
从ftp://ftp.qt.nokia.com/qt/source链接下载源码。网上很多人说用的是qt-everywhere-opensource-src-4.8.1.tar.gz
但我用该源码包在执行make步骤时,碰到了很多难以搞定的错误就放弃了。之后我用的是qt-x11-opensource-src-4.5.3.tar.gz源码包。虽然这个包版本已经很老了,但就当练习装着玩下吧,期间也碰到了很多问题。
以下步骤都是以 qt-x11-opensource-src-4.5.3.tar.gz源码包来说明的
2.1 生成makefile文件
执行 tar -zxvf  qt-x11-opensource-src-4.5.3.tar.gz以解压源码包
cd到qt-x11-opensource-src-4.5.3目录执行如下命令:
./configure
以生成makefile文件,这个过程约10分多钟。
之后执行make以编译源码,这个过程中会弹出如下几个错误,现在罗列出来,供参考、排查:

 1 error: 'prepareComparison' was not declared in this scope, and no declarations were found by.....如上图所示。

解决方法:

找到qt-x11-opensource-src-4.5.3/src/xmlpatterns目录下的Makefile文件,在该文件的CXXFLAGS 后面加入:
-fpermissive
2 error :'adoptref' was not declared in this scope, and no declarations were found by.....如上图所示。

解决方法:找到qt-x11-opensource-src-4.5.3/src/3rdparty/webkit/WebCore/JavaScriptCore/wtf/RefPtr.h在文件头部加入如下代码:

#include "PassRefPtr.h"

3 error :'erase' was not declared in this scope, and no declarations were found by....如上图所示。

解决方法:找到 qt-x11-opensource-src-4.5.3/src/corelib/tools/qmap.h文件的996行的24列,将erase改为this->erase

4:error :'getCachedDOMConstructor' was not declared in this scope, and no declarations were found by.....如上图所示。

解决方法:

找到 qt-x11-opensource-src-4.5.3/src/xmlpatterns目录下的Makefile文件,在该文件的CXXFLAGS 后面加入: -fpermissive

5 'insert' was not declared in this scope, and no declarations were found by.....如上图所示。

解决方法:找到 qt-x11-opensource-src-4.5.3/tools/porting/src/codemodel.h文件的99行的50列,将 insert 改为this->insert

个人建议将上述5个错误全部排除后再make,这样可以节省make的时间,整个make下来估计1小时左右,之后执行

make install

以安装

2.2 安装qtcreator

从ftp://ftp.qt.nokia.com/链接下载qtcreator下载下来后是后缀名为.bin的文件,执行

chmod +x qt-creator-linux-x86-opensource-2.5.2.bin

之后执行 ./qt-creator-linux-x86-opensource-2.5.2.bin就可以安装qtcreator了

2.3 环境变量的配置

同图形化安装步骤1.3,只不过QTDIR等请根据步骤1安装的qt的sdk路径等作出相应更改,这里不再详述。

2.4 qtcreator配置

同图形化安装的步骤1.4,这里不再详述。

2.5 注意事项 

请确保qt的sdk和qtcreator版本的一致性,否则会出现很多诡异,难缠的问题。这里讲的用源码安装的QT的sdk和qtcreator因为这两个版本的不一致导致在qtcreator向导生成的QT工程中,在main函数的第一句代码QApplication a(argc, argv)就发生了如下的错误:
Signal received

The inferior stopped because it received a signal from the Operating System.

Signal name : SIGSEGV

Signal meaning : Segmentation fault.

当时找这个问题找了好久,必须牢记qt的sdk版本是适用于当前你手头的qtcreator的,否则会出现很多诡异,难缠的问题。

【Qt开发】Linux下Qt开发环境的安装与集成的更多相关文章

  1. linux下搭建lamp环境以及安装swoole扩展

    linux下搭建lamp环境以及安装swoole扩展   一.CentOS 6.5使用yum快速搭建LAMP环境 准备工作:先更新一下yum源  我安装的环境是:apache2.2.15+mysql5 ...

  2. linux下Gnome桌面环境的安装

    在实际工作中,无论是生产环境还是公司内部环境.很多时候装的linux系统都是最小化安装的.即没有桌面环境, 那么如果有时我们又需要一个桌面环境.该怎么安装呢?其实不难,现笔者将安装方法分享如下. 测试 ...

  3. deepin linux 下C开发环境配置

    # deepin linux 下C开发环境配置 ## 前言-----------------------------deepin操作系统商店默认提供了 eclipse for c\c++但是系统没有提 ...

  4. Linux下golang开发环境搭建

    对于golang开发来说,Windows下可以用vscode或者liteide都不错,但是Linux下的开发也就只有vim了,所以怎么搞笑的利用vim进行golang开发呢? 参考官方推荐的一个插件: ...

  5. Linux下Qt的安装与配置

    参考资料:http://www.cnblogs.com/emouse/archive/2013/01/28/2880142.html Linux 下编译.安装.配置 QT 下载qt 这里用的是4.7. ...

  6. linux下C++开发工具

    就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, anjuta,kd ...

  7. (转)Linux下C++开发初探

    1.开发工具 Windows下,开发工具多以集成开发环境IDE的形式展现给最终用户.例如,VS2008集成了编辑器,宏汇编ml,C /C++编译器cl,资源编译器rc,调试器,文档生成工具, nmak ...

  8. Linux下c开发 之 线程通信(转)

    Linux下c开发 之 线程通信(转) 1.Linux“线程” 进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型.Linux是一种“多进程单线程”的操作系统.Linu ...

  9. 【转载】Visual Studio 2015 for Linux更好地支持Linux下的开发

    原文:Visual Studio 2015 for Linux更好地支持Linux下的开发 英文原文:Targeting Linux Made Easier in Visual Studio 2015 ...

  10. Linux下c开发 之 线程通信

    Linux下c开发 之 线程通信 1.Linux“线程” 进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型.Linux是一种“多进程单线程”的操作系统.Linux本身 ...

随机推荐

  1. Python之网路编程之粘包现象

    一.什么是粘包 须知:只有TCP有粘包现象,UDP永远不会粘包 粘包不一定会发生 如果发生了:1.可能是在客户端已经粘了 2.客户端没有粘,可能是在服务端粘了 首先需要掌握一个socket收发消息的原 ...

  2. python操作 windows 锁屏与锁屏状态判断

    pip install ctypes from ctypes import * while True: u = windll.LoadLibrary('user32.dll') result = u. ...

  3. 【leetcode】1179. Reformat Department Table

    题目如下: SQL Schema Table: Department +---------------+---------+ | Column Name | Type | +------------- ...

  4. git 清除缓存

    清除git缓存 git config --local --unset credential.helper git config --global --unset credential.helper g ...

  5. 2019春Python程序设计作业2(0326--0401)

    1-1 已知st="Hello World!",使用print(st[0:-1])语句可以输出字符串变量st中的所有内容. (2分) T         F 1-2 Python程 ...

  6. case 函数两种格式

    1.简单case函数 CASE sex WHEN '0' THEN '男' WHEN '1' THEN '女' ELSE '其他' END 2.case搜索函数 CASE WHEN sex = '0' ...

  7. html article标签 语法

    html article标签 语法 article标签有什么作用?直线电机生产厂家 作用:html中article标签的作用是规定独立的自包含内容,其中外部内容是来自一个外部的新闻提供者的一篇新文章, ...

  8. UVa 213 信息解码 (模拟 && 二进制)

    题意 :对于下面这个字符串 0,00,01,10,000,001,010,011……. 首先是长度为1的串,然后是长度为2的串,以此类推.不存在全为1的串. 你的任务是编写一个程序.首先输入一个代码头 ...

  9. mini-batch

    我们在训练神经网络模型时,最常用的就是梯度下降,梯度下降有一下几种方式: 1.Batch gradient descent(BGD批梯度下降) 遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度 ...

  10. 【python 应用之四】提升 Python 运行性能的 7 个习惯

    大家都知道艺赛旗的 RPA 依赖于 python 语言.因此我们可以掌握一些技巧,可尽量提高 Python 程序性能,也可以避免不必要的资源浪费.1.使用局部变量 尽量使用局部变量代替全局变量:便于维 ...