一、为什么要静态编译

用QtCreator编译程序时,使用的是动态编译。编译好的程序在运行时需要另外加上相应的Qt库文件,一大堆dll文件。如果想将生成的程序连同所需要的库一起完整地打包成一个可执行程序,那就需要使用静态编译。Qt官方不提供静态编译好的安装包,所以需要我们在自己的电脑上静态编译。而且exe文件会比动态编译的要小上很多。

二、源码下载

源码下载地址

打开网址选择一般选择最新的版本,根据QT官方Qt5.12这一版有长期的技术支持,大约5年的样子稳定性相对来说比较高,所以建议选择这个版本的源码来编译。 我编译的时候才是Qt5.12.2,MD我前天刚编译好今天就跟新到Qt5.12.3。伤不起啊。

三、安装编译工具

安装的编译工具有:

  1. pythone 这个工具强大没朋友,感觉干啥都有它
  2. Ruby 下载页面有提示,一般下载官方推荐的稳定版
  3. Perl 下载最新版,没毛病老铁。

一般来说下载这三个工具就可以,记得要设置环境变量,当然你要编译MSVC版的安装Visual Studio2017,并且安装它。

四、编译环境选择

  这次我选择编译x86的静态库,原因很简单。64位的系统可以运行32位的程序,但是反之则不可以,所以选择编译环境位x86

五、编译参数配置

打开源码所在位置( qtbase\mkspecs\common\msvc-desktop.conf )找到如图所示位置文件并修改保存:

六、开始编译

  1. 先打开命令工具提示切换到源码所在位置

  1. 切换完成之后输入如下命令(建议复制粘贴):
configure.bat -static -prefix "D:\Qt\msvc2017_static" -confirm-license -opensource  -debug-and-release -platform win32-msvc  -nomake examples -nomake tests  -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -mp
 configure.bat
 -static //指明是静态编译
 -prefix "D:\Qt\msvc2017_static" //指明安装的目录
 -confirm-license -opensource  //指明是开源版本的qt
 -debug-and-release //指明需要debug版和release版,可以单独选择release版
 -platform win32-msvc  //指明使用msvc编译
 -nomake examples -nomake tests  //不编译样例
 -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg //可选插件
 -opengl desktop
 -mp //多核编译
  1. make
    在命令提示工具输入:
    nmake
    此时源码开始编译,编译时长根据电脑的配置而异,我的电脑I7 7500U Inter240GSSD,大约从早上上班9点种开始编译,在下午6点钟下班的时候没有编译完,等第二天早上上班之后发现已经编译完了,具体多长时间也不知道。乐观12+小时以上。

  2. nmake install
    安装完成之后在命令提示工具输入:
    nmake install
    此时编译号的源码开始安装,这个安装时长大概2个小时左右吧。安装完成之后就可以使用了。

七、开始使用

源码编译安装完成之后,需要安装Qt Creator工具来使用我们刚刚编译好的静态QT。首先下载 [QtCreator](http://download.qt.io/official_releases/qtcreator/)

依然选择最新版下载并安装。安装完成之后打开开发工具我们需要配置一下才能使用。

** 注意事项:在里一定要天写“win32-msvs”。否则编译器会报编译目标类型错误 **

配置完以上内容就可以开始放心的编译自己的程序。测试了一下空白程序在release模式下大概11M左右,还是蛮大的吧,优势就是不必担心丢失DLL文件而报错了。

八、注意事项

  1. 在添加Qt Versions时可能会报“qmlscene 未安装”,出现黄色感叹号。这是你只需将安装Qt官方动态编译的安装包拷贝相应目录里面的“qmlscene.exe”到我们刚刚编译安装的目录下重新添加就ok了。

  2. 当你下载别人编译好的静态库或者把自己编译的库移动了一个位置时Qt Versions 位提示错误“qt未正确安装,请使用make install进行安装”。不要怕其实不用重新编译安装的,只需在目录下新建一个文本文档“qt.txt”,然后输入

[Paths]
Prefix=D:/qt/static

** 注意:输入完之后保存时选择“ANSI”,另存为的时候有选择提示选择“ANSI”类型即可。最后将qt.txt改为qt.conf。 **

九、结尾

做好上述8个步骤之后我们的静态环境就彻底搭建好了,然后就欢乐的码代码吧。

附上自己编译的静态库和编译工具 :链接:https://pan.baidu.com/s/1E3Y40FCmzQQMz_doZ0OYcQ  提取码:fme4

Qt最新版5.12.2在Win10环境静态编译安装和部署的完整过程(VS2017)的更多相关文章

  1. Win10 VS2015 静态编译Qt5.6.2源码

    由于VS2015需要CRT等拓展组件,因此把内部编写的工具软件以静态发布,固需要编译Qt源码.Qt5.6.2版本,VS2015,Win10 1.安装python,perl,下载jom 2.改文件com ...

  2. Anaconda 安装教程(Win10环境) Tensorflow安装

    序 Python易用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,特别是当你使用Windows的时候.为了解决这些问题,有不少发行版的Python,比如WinPython.An ...

  3. RabbitMQ 在 Win10 环境下的安装与配置

    1 RabbitMQ 环境配置 1.1 ErLang 下载安装     RabbitMQ 需要 ErLang 环境支持:首先下载 ErLang 并安装.     建议使用新版本,版本过低存在与 Rab ...

  4. suse 12 sp3 利用shell脚本离线编译安装ansible

    # 测试环境是suse 12 sp3的系统,机器都是内网使用的,安装ansible真的很难顶 # 测试环境使用的python版本:2.7.13-27 # 此脚本只在本人测试环境成功,其他环境,需要选择 ...

  5. win10环境下tensorflow-gpu安装

    踩了很多坑,浪费了一下午时间,在此记录一下. pip install tensorflow-gpu 然后下载安装cuda8.0 https://developer.nvidia.com/cuda-do ...

  6. 【初学必备】Win10环境下Anaconda安装

    Anaconda集合了python,Spyder,Jupyter notebook及conda-----包管理器与环境管理器(含常用的panda,numpy等),省去单独下载的繁琐步骤,方便使用. 注 ...

  7. win10 环境下 MinGW-w64安装

    MinGW-w64 就是 著名C/C++编译器GCC的Windows版本. 一.什么是 MinGW-w64 ?MinGW 的全称是:Minimalist GNU on Windows .它实际上是将经 ...

  8. Win10 Ubuntu18.04 编译安装 nignx

    nginx 下载页 http://nginx.org/en/download.html wget http://nginx.org/download/nginx-1.14.0.tar.gz //安装依 ...

  9. Linux/Ubuntu下 静态编译Qt程序

    一般情况下,我们用Qt编译出来的程序是要依赖于系统Qt库的,也就是这个程序移到别的没有安装Qt库的系统上是不能使用的.会提示缺少……库文件之类的错误.这就是动态编译的结果. 但是如果我们想编译一个程序 ...

随机推荐

  1. 一些学习js的算法题目

    1.排序 问题描述 编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列. 输入格式:输入只有一行,即三个整数,中间用空格隔开. 输出格式:输出只有一行,即排序后的结果. 输入输出样 ...

  2. leetcode 198. House Robber (Easy)

    https://leetcode.com/problems/house-robber/ 题意: 一维数组,相加不相邻的数组,返回最大的结果. 思路: 一开始思路就是DP,用一维数组保存dp[i]保存如 ...

  3. 《 C#语言学习笔记》——自动属性

    属性是访问对象状态的首选方式,因为它们禁止外部代码实现对象内部的数据存储机制.属性还对内部数据的访问方式有了更多控制.一般以非常标准的方式定义属性,即通过一个公共属性直接访问一个私有成员. 利用自动属 ...

  4. (原创)将Datatable数据按照Excel模板格式导出

    最近遇到一个问题,就是导出数据的时候需要自定义的表头,如图 如果自己用代码写表头的话,可能会有点复杂,而且代码量很多,所以我就想了一个办法,直接在Excel里面把表头定义好,然后把数据写入Excel模 ...

  5. python查漏补缺 --- 基础概念及控制结构

    python  是一种面向对象的解释型计算机程序设计语言,在运行时由解释器处理,在执行程序之前不需要编译程序.Python就是一句话,写得快,跑得慢. 下面的内容是平时工作中容易忽略掉的小细节,希望借 ...

  6. 工作笔记--对接三方Http接口遇到的问题

    在使用 HttpClient 4.4 调用第三方 http api 时遇到了很多问题,还好最后都解决了,记录一下遇到的问题及解决办法,希望对同样有此问题的你有所帮助. 环境说明 首先说明一点是,对方的 ...

  7. Pow共识算法

    谈到哈希算法,每个程序员都不陌生,但是谈到比特币共识算法PoW,如果没有接触过的技术人员可能觉得应该会很复杂,毕竟全球的比特币节点数量如此庞大,达成共识的算法应该不会很简单.但其实如果你已掌握哈希算法 ...

  8. codeforces 371A K-Periodic Array

    很简单,就是找第i位.i+k位.i+2*k位...........i+m*k位有多少个数字,计算出每个数出现的次数,找到出现最多的数,那么K-Periodic的第K位数肯定是这个了.这样的话需要替换的 ...

  9. 【OpenCV-ANN神经网络自动驾驶】树莓派OpenCV神经网络自动驾驶小车【源码+实物】

    没错!这个是我的毕业设计!!! 整个电子信息学院唯一一个优秀毕业设计 拿到这里炫耀了 实物如下: 电脑端显示效果: 自动驾驶实现过程: 1. 收集图像数据.建立局域网,让主机和Raspberry Pi ...

  10. Tomcat+MySQL常见调优参数

    一.Tomcat 调优 (一).Tomcat内存优化 参数一: vim /tomcat/bin/catalina.sh CATALINA_OPTS="-server -Xms128m -Xm ...