在默认情况下,用QtCreator编译程序时,使用的是动态编译。编译好的程序在运行时需要另外加上相应的Qt库文件,一大堆dll文件。如果想将生成的程序连同所需要的库一起完整地打包成一个可执行程序,那就需要使用静态编译。
在win7 x64 静态编译制作过程如下:
一、安装Qt
本文选择的Qt版本为qt-opensource-windows-x86-mingw530-5.8.0.exe,下载链接:http://download.qt.io/official_releases/qt 。注意安装的时候需要勾选安装源码,如下图:
二、安装Perl
我选择的是ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi
安装包:Windows Installer (MSI)
官网地址:ActivePerl Downloads - Perl Binaries for Windows, Linux and Mac
注:环境变量安装过程自动添加的,如果没有添加,手动添加。
三、安装Python
我选择的是python-3.5.1.exe
安装包:Windows x86 executable installer
官网地址:Download Python | Python.org
注:安装好Python后,将安装目录添加到PATH环境变量中(安装的时候如果选上“Add Python 3.5 to PATH”会自动添加)
四、下载OpenSSL
由于http通信需要用到OpenSSL,而Qt源码没有包含OpenSSL库,故需要下载OpenSSL库,OpenSSL的编译我不建议自己进行,比较麻烦,本文直接下载已经编译好的ssl库,下载地址:链接:https://pan.baidu.com/s/1dksCTC 密码:ibp0
我这里将压缩包解压到了C:\Dev
五、检查
找到对应Qt的命令行程序,并打开
输入以下命令看看 gcc 编译器是否配置正确,
gcc -v
- 1
再输入以下命令看看 perl 解释器是否配置正确
perl -v
- 1
输入以下命令看看 python 是否配置正确
python
- 1
按 Ctrl + Z 回车,可以退出 python
六、编译Qt
1.配置Qt(1分钟)
切换到Qt的源码目录
cd C:\Qt\Qt5.8.0\5.8\Src
- 1
运行命令
configure.bat -static -debug-and-release -platform win32-g++ -prefix "C:\Qt\Qt5.8.0\5.8\mingw53_32_static" -qt-sqlite -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -openssl-linked -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests OPENSSL_LIBS="-llibssl -llibcrypto -lgdi32" -L C:\Dev\openssl-1.0.1c_static_w32_mingw -I C:\Dev\openssl-1.0.1c_static_w32_mingw\include -skip qtwebengine -skip qtwebview -skip qt3d -skip wayland
- 1
注:这里配置的时候,跳过了qtwebengine、qtwebview、qt3d、wayland如果需要这些模块可以去掉skip
注意:此处的配置命令至关主要,如果命令不对编译出来的Qt功能可能不全,如果编译过之后发现有问题需要在没有编译过的源码基础上编译,在编译过的源码上编译出来有问题(我编译的时候没有重新用没有编译过的源码导致花了好多时间),所以在配置之前先拷贝一份源码(即Src目录),万一出错了还可以复制一份重新编译。
2.编译(4小时左右)
mingw32-make -j2
- 1
注:本处为2个线程编译,电脑好的可以开更多的线程,编译速度也更快
3.安装(20分钟左右,硬盘好的话会快点)
mingw32-make install
- 1
4.后续
在编译/安装好后,我们可以把源码目录删了,这可以释放出大约8G的空间,很可观
七、配置
1.添加一个Qt版本
打开Qt Creator -> 工具 -> 选项 -> 构件和运行 -> Qt Versions,按照下图添加Qt版本,然后点Apply。
2.设置套件
按照下图添加,注意Qt版本一定要记得选对,然后点Apply。
3.配置编译器
用记事本打开 C:\Qt\5.6.0_MinGW_static\mkspecs\win32-g++\qmake.conf
找到 QMAKE_LFLAGS 和 QMAKE_LFLAGS_DLL将后面都改成 -static
至此,Qt的静态版本全部编译好了,欢迎各位网友留言讨论,我将编译好的版本上传百度网盘,链接:https://pan.baidu.com/s/1pMNhKQv 密码:x2cy 供大家参考。