CentOS编译安装Qt(Qt可使用静态编译编译器)_type 'o' if you want to use the open source editio-程序员宅基地

技术标签: 环境配置  Qt  编译器  qt  静态编译  linux  centos  

CentOS编译安装Qt(Qt可使用静态编译编译器)

前言

  Qt写GUI非常方便,Qt也可以跨平台。但是Qt的跨平台和Java的不太一样,Qt跨平台是一次编码处处编译的,所以如果想把在Windows写的程序移殖到Linux,那么免不了要在Linux里安装Qt。下面以CentOS为例编译安装Qt。

下载Qt源码

  首先在网上下载Qt的源码,然后才可以编译。
  源码可在如下网址下载:
http://download.qt.io/archive/qt/
  我是下载的Qt4.7.4(进入网址后先点4.7/然后再点qt-everywhere-opensource-src-4.7.4.tar.gz),想下载和我一样版本的可以按照我的方法点击下载,如果不想跳转到那个网页后自己选,可以直接点击http://download.qt.io/archive/qt/4.7/qt-everywhere-opensource-src-4.7.4.tar.gz下载。

编译安装——以4.7.4为例

  首先把源码解压,然后进入解压源码的目录,比如终端下命令行:

tar zxvf qt-everywhere-opensource-src-4.7.4.tar.gz
cd qt-everywhere-opensource-src-4.7.4

  到这里又是熟悉的三步曲了(配置、编译、安装)。
终端下命令行:

./configure -static -release -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg -nomake demos -nomake examples -qt-sql-sqlite -prefix /usr/local/Trolltech/Qt-4.7.4_static

回车后它会提示:

Type 'c' if you want to use the Commercial Edition.
Type 'o' if you want to use the Open Source Edition.

这时输入o回车,之后它会问你是否同意一个许可(License),输入yes回车即可。

虽然标题是CentOS下安装Qt,但是我也用过Ubuntu安装,在Ubuntu配置时,可能会出现一个问题:
Basic XLib functionality test failed!
解决方法是:
sudo apt-get install libx11-dev libxext-dev libxtst-dev

完成配置后继续:

make	#如果嫌太慢,可以用make -j2或make -j3,之类使用多个线程同时编译(-jx就是x个线程)
sudo make install

  整个过程如果没报错就安装成功了。如果任何一个地方报错,就要处理了,下面是我遇到过的问题:
  make时出现:/usr/bin/ld: cannot find -lXrender
  解决方法:sudo yum install libXrender*

安装QtCreator

  可以用QtCreator来编译你的程序代码。
  到如下网址随便选一个版本的QtCreator下载即可:
http://download.qt.io/official_releases/qtcreator/
  虽然版本是随便选,但是在CentOS下用的话,一定要选linux的,后缀是.run的。

设置编译器

  一般安装了QtCreator后,QtCreator不能自己检测到你的编译器(就是刚刚编译安装那个编译器,QtCreator不能自动检测到),所以要手动设置。
  网上有很多人说要动环境,要在一些配置文件里改来改去,其实不需要,直接在QtCreator里设置就好了。
  启动QtCreator后(如果是CentOS系统,安装了QtCreator后,直接在左上角“应用程序”的“编程”里可以找到QtCreator,单击即可启动)单击“工具”然后点“选项”:
应用程序-编程
工具-选项

  在“构建和运行”里的“Qt Versions”里,添加你的编译器(如果你是完全按照我什么的步骤来的话,你的编译器路径应该是:/usr/local/Trolltech/Qt-4.7.4_static/bin/qmake)
Qt Versions

图片里有两个编译器是因为我之前编译过一个非静态编译器,编译非静态编译器的方法非常简单,就是前面配置的时候,什么都不写就行了,把之前的./configure -static -release -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg -nomake demos -nomake examples -qt-sql-sqlite -prefix /usr/local/Trolltech/Qt-4.7.4_static换成./configure就好了。

  然后在“构建套件(Kit)”里添加一个Kit,把它的“Qt 版本”设置成你刚刚添加的那个:
Kit
  然后你的Qt就能用了,而且还是使用静态编译的。

附加——Windows Qt静态编译的方法(以5.4为例)

  很多时候,用Qt只是想写一个小工具而已,但是每次打包都会出现七大姑八大姨的dll。如果是静态编译,就可以不需要打包了,编译出来的exe直接给别人就能用了。(静态编译出来的exe文件大小大概在17M,调的库越多,程序越复杂,exe就越大)

需要的工具

编译源码之前要确保你有以下工具:

  1. Perl,下载地址:https://www.activestate.com/products/perl/downloads/
  2. Python,下载地址:https://www.python.org/downloads/

  编译的方法和前面CentOS的差不多,但是源码基本上是不需要下载的,因为你能想到要在Windows静态编译你的Qt你肯定是已经在Windows里安装了Qt了的,而绝大多数情况下你安装的Qt就是附带源码的。
  首先打开你的Qt(是Qt不是QtCreator)
Qt
  是这个东西,就是平时用来打包的工具。
  然后cd到你的源码目录:
cd
  先试试工具都配置好了没有:

gcc -v
perl -v
python

检查环境
  没报错,能用,就行了。
  然后就又是熟悉的三步曲了(配置,编译,安装)。

配置

你的程序不需要使用openssl

  一般没用到加密算法的,没有访问https的,都是不需要openssl的,Qt编译起来比较简单。(上面CentOS下的Qt也是没有用到openssl的)

configure.bat -confirm-license -opensource -platform win32-g++ -debug-and-release -static -prefix "E:\Qt5.4.0\Qt5.4.0\5.4\mingw491_32_static" -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -qt-pcre -qt-harfbuzz -opengl desktop -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtwebengine

注意:上面的"E:\Qt5.4.0\Qt5.4.0\5.4\mingw491_32_static"是你想要把静态编译编译器安装到的路径,可以改。

你的程序需要使用openssl

  如果你的程序访问了https,那么不链接openssl的话,你的程序基本上是废了,所以编译的方法略有不同。建议使用openssl的静态编译编译器版本和不使用openssl的静态编译编译器版本要分开来,如果你只有使用openssl的编译器,你的静态编译也是很痛苦的,因为使用了openssl的静态编译器在任何一个你编译的程序需要复制openssl的dll到你的exe目录,也就是说这种静态编译不完美,所以没有使用到openssl的程序还是建议用不使用openssl的静态编译器编译。
  首先要先安装openssl,进入如下网站:
http://slproweb.com/products/Win32OpenSSL.html
openssl
  下载后把它安装了就行。

开始配置:

configure.bat -confirm-license -opensource -platform win32-g++ -debug-and-release -static -prefix "E:\Qt5.4.0\Qt5.4.0\5.4\mingw491_32_static_ssl" -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -qt-pcre -qt-harfbuzz -opengl desktop -openssl-linked OPENSSL_LIBS="-lssleay32 -llibeay32 -lgdi32" -L C:\OpenSSL-Win32 -I C:\OpenSSL-Win32\include -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtwebengine

其中:"E:\Qt5.4.0\Qt5.4.0\5.4\mingw491_32_static_ssl"为欲安装到的目录;C:\OpenSSL-Win32为openssl的安装目录;C:\OpenSSL-Win32\include为openssl安装目录里的include。都要和你的电脑里openssl的安装路径对应上。

编译

mingw32-make -j2	#-j2是用两个线程编译,因为编译时间实在是太长了,如果你的电脑够好,还可以再开多几个线程

安装

mingw32-make install

配置编译器

  和CentOS一样,在QtCreator里设置Qt Versions和Kit,Qt Versions的路径是编译器安装路径+"\bin\qmake.exe"。
  然后和CentOS不同的是,Windows还需要改一个东西。用记事本打开静态编译的编译器目录下的mkspecs\win32-g++\qmake.conf文件。修改两个配置(QMAKE_LFLAGS和QMAKE_LFLAGS_DLL,都改为-static)。
修改配置

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/nicedante/article/details/106584997

智能推荐

ESP-IDF版本更新说明(V2.1版)转自github(https://github.com/espressif/esp-idf/releases/)...-程序员宅基地

文章浏览阅读1.2k次。ESP-IDF Release v2.1igrr发布了这个on 29 Jul·自此发布以来,我承诺要承诺414自v2.0以来的变化。突破变化版本v2.1旨在大大兼容为ESP-IDF v2.0编写的应用程序。但是,引入以下突破性变化:esp_bt_controller_init函数收到一个新的esp_bt_controller_config_t *参..._rmt_set_tx_thr_intr_en

操作系统IPC漏洞研究-程序员宅基地

文章浏览阅读297次。在学校申请做了个项目。一切都差不多准备好了,等待结题之中。这种三流学校就是差劲,做事没有规程,没有效率。到后来实在没有规章制度就自己随便搞个来限制你。虽然学校差劲,但是在做这个项目的时候还是学到了很多东西。最起码,发表了一篇论文,虽然写的不是很深奥的东西,但是自己对这个研究还是蛮满意的。今日就把论文给挂上面,来显摆显摆:操作系统IPC漏洞分析与防范朱宁武,张 宇..._ipc漏洞

Fragment切换刷新数据-程序员宅基地

文章浏览阅读280次。2019独角兽企业重金招聘Python工程师标准>>> ..._fragment切换刷新

Halcon算子:smallest_rectangle1()和smallest_rectangle2()-程序员宅基地

文章浏览阅读1.5w次,点赞6次,收藏37次。Halcon算子:smallest_rectangle1()和smallest_rectangle2()_smallest_rectangle1

25类Android常用开源框架-程序员宅基地

文章浏览阅读714次,点赞10次,收藏29次。=========| 框架名称 | 功能描述 |,使用的App有:薄荷,哔哩哔哩 || 图片裁剪,使用的App有:网易新闻,芒果TV || 图片裁剪开源框架 || Android 大图片裁剪终极解决方案 || A Library which can be used to crop images in Android similar to Facebook and Telegram,使用的App有:快手 |==========| 框架名称 | 功能描述 |

微信小程序之网上订餐小程序源码+论文+开题报告-程序员宅基地

文章浏览阅读397次,点赞9次,收藏11次。本微信点餐系统小程序管理员功能有个人中心,用户管理,菜品管理,新上菜品管理,预定订单管理,活动信息管理,用户评价管理,系统管理,订单管理等。管理员功能有个人中心,用户管理,菜品管理,新上菜品管理,预定订单管理,活动信息管理,用户评价管理,系统管理,订单管理等。开发软件:微信开发者工具、后端使用IDEA/Eclipse/MyEclipse。微信小程序端:Vue+uni-app。后端:Java+SSM。

随便推点

ListView中嵌套ViewPager(ViewPager是item的一部分),并且存在判断位置的小白点。...-程序员宅基地

文章浏览阅读55次。============问题描述============ 被bug困扰了好久:1.白点会出现混乱,有的时候是正常的,有的时候会不动(如果界面只有一个item,白点可以正常切换,有两个item就会不动)。2.当有两个item时,如果滑动上一个item图片与下一个item一样时,下面的item的图片就会消失。本人新手,贴上代码,求各位大神..._listview 嵌套viewpager viewpager item复原

详解三次握手与四次挥手及相关面试题回答_3次握手4次挥手面试怎么回答-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏14次。三次握手含义三次握手其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。TCP报文要想弄懂三次握手,得先从TCP的报文格式入手:有32位的序号和确认序号。 ACK:置为1便是确认连接。 SYN:置为1代表发起一个新连接。 FIN:置为1代表释放一个连接。 具体过程标志位的解释前两次建立连接时._3次握手4次挥手面试怎么回答

(保姆式教学) Win10 + Ubuntu 20.04——双系统安装方法 + 配置显卡 + root权限 + flash调配_双系统安装保姆教程-程序员宅基地

文章浏览阅读9.5w次,点赞209次,收藏1.1k次。这里写自定义目录标题Win10 + Ubuntu 20.04——双系统安装方法 + 配置显卡 + root权限 + flash调配(保姆式教学)请同学们提前准备:第一步:**准备U盘**第二步:**确定自己电脑的类型**第三步:**安装ubuntu镜像**第四步:**为新系统,分配硬件存储空间**第五步:**用UltralSO软碟通,将 UBUNTU 的镜像写入 U盘**最后一步!胜利就在眼前!:**使用U盘,安装新系统**特殊事项root限权问题赠送一条Tip最后的最后Win10 + Ubuntu 20_双系统安装保姆教程

JAVA中的抽象类_java抽象类可以实现多个方法吗-程序员宅基地

文章浏览阅读509次。抽象下面我们先来看Java抽象类的定义。java抽象类体现数据抽象的思想,是实现程序多态性的一种手段。也提到抽象类与抽象方法的限制,下面我们会通过一下java抽象类小示例来给你介绍抽象类的用法。希望对你有所帮助。假设我们要编写一个计算矩形、三角形和圆的面积与周长的程序,若按前面所学的方式编程,我们必须定义四个类:圆类、三角形类、矩形类和使用前三个类的公共类,它们之间没有继承关系._java抽象类可以实现多个方法吗

南昌大学利用计算机作弊怎样处分,南昌大学医学院计算机中心在全国计算机等级考试里组织集体作弊...-程序员宅基地

文章浏览阅读347次。南昌大学医学院计算机中心在全国计算机等级考试里组织集体作弊,医学院计算机中心从05年就开始以培训班为名,每人收取220元钱,报了他们的培训班,考试就可以安排在三楼机房考试,他们也知道,这个机房考试的都是交了220元钱的,教务处不是也有学生吗?你可以向学生了解情况,他们这个作弊团伙已经有五年了,是教师组织的…(2)这个事情我已经给学校党委,写信过,他们叫我找你们教育处…我现在在试图直接联系周文斌校长...

微软开源 C++ REST SDK-程序员宅基地

文章浏览阅读63次。微软的代号为Casablanca的C++ REST SDK已经基于Apache许可证开源。它被描述为“微软为了以原生代码支持基于云的客户端/服务器通信所做的努力,采用了现代异步C++ API设计”。该产品使用C++11实现,微软希望提供一种更简单的编写客户端HTTP代码的方法。Casablanca支持多个平台,除了Windows 7、Windows 8之外还支持Linux。微软的开发人员Art...