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

智能推荐

打印系统开发(42)——静默打印_静默打印是什么意思-程序员宅基地

文章浏览阅读4.4k次。1.问题描述希望每次打印时,都是用固定的打印机打印并且不希望弹出对话框进行设置,此时便可以设置静默打印。1.1什么是静默打印静默打印即点击打印时不弹出选项窗口和打印机设置窗口直接进行打印。1.2支持静默打印的打印方式零客户端打印、本地打印、服务器端打印支持静默打印。2.静默打印设置方法2.1 零客户端打印设置方法注:只支持 IE点击模板-打印..._静默打印是什么意思

STM32+74HC595:带领你10分钟用对74HC595_74hc595连接stm32-程序员宅基地

文章浏览阅读2.4w次,点赞14次,收藏68次。使用的是STM32CBT8,小模块用起来性价比超级高,资源丰富,移植u/COS及HTTP、MQTT协议等等用起来简直欲罢不能,摇摇欲仙!BUT:IO口资源太少了,我想让你驱动100个LED,你缺告诉我,我的要求太多,你满足不了......还好,找到了74HC595,但是网上很多资源讲的我看了半天才总结、提炼并另辟蹊径出来精髓===============================_74hc595连接stm32

莱昂哈德·欧拉生平及其成就简介_欧拉的物理成就-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏8次。莱昂哈德·欧拉(Leonhard Euler ,1707年4月15日~1783年9月18日),瑞士数学家、自然科学家。1707年4月15日出生于瑞士的巴塞尔,1783年9月18日于俄国圣彼得堡去世。欧拉出生于牧师家庭,自幼受父亲的影响。13岁时入读巴塞尔大学,15岁大学毕业,16岁获得硕士学位。欧拉是18世纪数学界最杰出的人物之一,他不但为数学界作出贡献,更把整个数学推至物理的领域。他是数学史上最多产的数学家,平均每年写出八百多页的论文,还写了大量的力学、分析学、几何学、变分法等的课本,《无穷小分析引论》、_欧拉的物理成就

Error: PL/SQL: ORA-00980: 同义词转换不再有效_sql数据库中同义词转换不再有效-程序员宅基地

文章浏览阅读1.5w次。今天在写存储过程的时候,碰到一个问题,在执行存储过程的时候总是报错--同义词转换不再有效,发现一个查询语句中的一个表原来使用的是一个同义词,就试着把这个同义词单独拿出来进行查询操作,发现并没有问题。最后,经过一番努力,发现该同义词并不是直接指向一个实体表,而是指向另一个同义词。所以,将改同义词的指向改为直接指向原实体表的指向,问题得到解决。即同义词指向的 object ow_sql数据库中同义词转换不再有效

idea 怎么修改项目名字和modules配名字_idea修改groupid-程序员宅基地

文章浏览阅读2.5k次。我们会遇到很多场景比如说git拉取一个项目改成自己的 或者架构师搭建架构喊你拿过来用 是不是的改名字。mvn idea:module 这个是生成.iml文件 删除以前的.iml.重新导入工程编辑运行。第五 补充 如果发现你改项目能把原来的项目modules也改了。第二步 改 点击project Stucture。a/是项目名字 name 也是。第三步 改modules。_idea修改groupid

信息论复习—循环码-程序员宅基地

文章浏览阅读5.5k次,点赞12次,收藏70次。信息论复习—循环码_循环码

随便推点

应用C预处理命令_c 添加预处理命令-程序员宅基地

文章浏览阅读1.6k次。********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi)时间:2011.10.17类别:C基础************_c 添加预处理命令

Acrobat 版本校验异常,请检查网络连接是否正常:NotAllowedError;安全性设置禁止访问本属性或方法。_版本校验异常,请检查您的电脑网络连接是否正常-程序员宅基地

文章浏览阅读1.3w次。一、上传企业所得税纳税申报表时,Acrobat提示版本校验异常,请检查您的电脑网络连接是否正常:NotAllowedError;安全性设置禁止访问本属性或方法。二、解决方法打开Acrobat DC 阅读器的然后 在菜单栏 --找到编辑--再选择首选项,添加该文件(如图)或者添加文件夹路径(注意:添加文件夹下面的路径将全部都会有权限,如果不是非必要,可以直接添加文件。)完_版本校验异常,请检查您的电脑网络连接是否正常

贪心算法——C++实现中级案例_c++贪心算法代码-程序员宅基地

文章浏览阅读95次。在贪心算法中,我们每次都选择当前状态下最优决策,然后更新状态,直到达到最终状态。本文将介绍几个经典的贪心算法案例,并给出C++代码实现。有n个任务需要调度,每个任务需要占用一个时间单位,并且有一个冷却期k。贪心算法本身也是一个很好的思维训练工具,可以帮助我们更好地理解问题本质和设计高效的算法。给定一个按升序排列的整数数组,将其划分成多个长度至少为3的连续子序列,每个子序列只包含连续的整数。有m个孩子和n个糖果,每个孩子有对应的贪婪值g_i和每个糖果有对应的大小s_i。贪心算法——C++实现中级案例。_c++贪心算法代码

从jeecg开源代码看泛型类型擦除之妙用_((dict)field.getannotation(dict.class)).dicttable(-程序员宅基地

文章浏览阅读446次,点赞10次,收藏14次。看代码与输出可以看出类型已被擦除,泛型不匹配或不指定只会产生编译告警,并不会产生编译错误,更不会运行错误。_((dict)field.getannotation(dict.class)).dicttable()

Python+GDAL进行影像坐标转换_python gdal transformpoint-程序员宅基地

文章浏览阅读1.1k次。Python实现遥感影像坐标转换_python gdal transformpoint

start-stop-daemon: unable to set gid to 0 (Operation not permitted)-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏4次。start-stop-daemon: unable to set gid to 0 (Operation not permitted)_start-stop-daemon: unable to set gid to 0 (operation not permitted)

推荐文章

热门文章

相关标签