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

文章目录

  • 前言
  • 下载Qt源码
  • 编译安装——以4.7.4为例
  • 安装QtCreator
  • 设置编译器
  • 附加——Windows Qt静态编译的方法(以5.4为例)
    • 需要的工具
    • 配置
      • 你的程序不需要使用openssl
      • 你的程序需要使用openssl
    • 编译
    • 安装
    • 配置编译器

前言

  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)

图片里有两个编译器是因为我之前编译过一个非静态编译器,编译非静态编译器的方法非常简单,就是前面配置的时候,什么都不写就行了,把之前的./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 版本”设置成你刚刚添加的那个:

  然后你的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)

  是这个东西,就是平时用来打包的工具。
  然后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

  下载后把它安装了就行。

开始配置:

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)。

CentOS编译安装Qt(Qt可使用静态编译编译器)相关推荐

  1. Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布

    首先是准备工作,去QT主页下载独立的QT类库安装包以及完整QT SDK安装包,还有QT Creator for windows 版 下载地址:http://qt.nokia.com/downloads ...

  2. linux系统编译qt代码需要编译qt,linux下如何静态编译QT库,以及如何静态编译自己的程序...

    Qt采用编译的方式安装的时候,配置中默认的编译方式是动态编译的,但是有时候你编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译你的程序,Qt要实现静态编译必须库文件也是静态编译的,所 ...

  3. boost库编译安装以及Qt导入

    1.下载boost安装包 https://www.boost.org/ 2.解压后进行编译安装 bootstrap .\b2 3.在qt中引用boost库 引用头文件 INCLUDEPATH += D ...

  4. 玩转mini2440开发板之【下载编译安装运行QT lib/QT Creator/QT程序全过程】

    玩了这么久的mini2440开发板,今天终于完整的将QT研究了一遍,从下载QT库的源码包.配置.编译.安装,然后再到QT Creator的下载.安装和配置,进而新建一个工程,并成功编译,下载到开发板中 ...

  5. centos 6 mysql 5.7.13 编译安装_Centos 6.5系统下编译安装PHP 7.0.13的方法

    PHP7.0正式版也出来了,今天编译安装了一下,写下安装步骤,我是在centos6.6 环境中编译的,下面是详细的安装步骤 环境依赖 yum install gcc gcc-c++ libxml2 l ...

  6. 源码包编译安装python_Python3.7源码包编译安装-Go语言中文社区

    环境: [root@localhost python3]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@loc ...

  7. mysql5.5编译安装参数_mysql-5.5源码编译安装(附参数对照表)

    1. 命令语法: 重新编译时,需要清除旧的对象文件和缓存信息 # make clean # rm -f  CMakeCache.txt 2.安装选项 CMAKE_INSTALL_PREFIX值是安装的 ...

  8. mysql5.6.22编译安装教程_Linux CentOS6.0下编译安装MySQL 5.6.22

    Linux CentOS6.5下编译安装MySQL 5.6.22[给力详细教程] 一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库(安装过程注意有没出错) yum install gcc ...

  9. mysql5.5.35编译安装_CentOS 6.5最小化编译安装mysql 5.5.35

    CentOS 6.5最小化编译安装mysql 5.5.35 1.关闭防火墙:[[email protected] ~]# service iptables stop iptables: Setting ...

  10. mysql 5.7编译安装重启_mysql5.7源码编译安装

    安装mysql前的准备: 一.安装依赖的库: yum install  gcc-c++ ncurses-devel perl-Data-Dumper python-devel openssl open ...

最新文章

  1. 我的Android 4 学习系列
  2. 强化学习笔记:Q-learning :temporal difference 方法
  3. 程序员,你是选择25k的996还是18k的八小时工作日
  4. python 中使用celery
  5. JZOJ 4726. 【NOIP2016提高A组模拟8.22】种花
  6. Python安装教程分享
  7. 统信软件用一年时间跨越式发展说明了一件事
  8. Android之定时器实现的几种方式和removeCallbacks失效问题详解
  9. linux 安装mongodb 64,在CentOS 6.x 64bit上安装MongoDB 3.2社区版
  10. vba 指定列后插入列_在不同的列左侧插入指定数量的空白列
  11. IIS搭建网站遇到的问题
  12. Jenkins+maven+SVN构建java项目中遇到的问题及解决
  13. 数字图像处理 冈萨雷斯(第四版)图像分辨率及大小,灰度级变化的影响,以及邻接、连通、区域和边界笔记
  14. Verilog实现按键消抖
  15. 如何准备一场Java面试?
  16. go语言中同一个package下的文件相互引用怎么做?
  17. 【Dubbo】序列化异常—— com.esotericsoftware.kryo.KryoException: Buffer underflow
  18. 为什么不是每个人都过着他梦想中的生活呢?
  19. PAT甲级1012:The Best Rank (25)
  20. java 多线程wait()方法的基本使用——63

热门文章

  1. 干货分享 | 如何搭建一个虚拟展厅虚拟展厅怎么做?
  2. 前端项目中如何去除已经不再使用的图片资源
  3. 一元三次方程求解(盛金公式)
  4. 优质开源:共享图书小程序3.0 全新UI 免费下载
  5. iptv是什么意思?什么是iptv?
  6. 事务统计系统软件 php,PHP数据库事务处理
  7. Vant Icon 图标
  8. wap建站系统开源_golang开源建站系统看过够kangg
  9. 什么是微分,dy又是什么
  10. 全国计算机等级考试在线报名入口,2021年3月全国计算机等级考试NCRE报名入口ncre-bm.neea.cn...