Qt for Windows:Qt 5.9.0 MinGW 静态编译版本(包含OpenSSL)

概述


5月31号,Qt这一次竟然没跳票,如约发布了LTS的5.9

感觉这一次5.9用的人会很多,毕竟LTS,而且确实改进很大,所以这一次完整的写一遍静态编译的步骤

我这里只涉及MinGW版本的静态编译,包含OpenSSL,不包含MySql

我使用的是 Windows10 64bit 操作系统

我也写了一篇,将如何静态发布QML开发的程序,是基于本文的,链接:

http://blog.csdn.net/wsj18808050/article/details/72865917


直接使用我的编译成果


这个最为简单,不需要自己编译Qt,但是Qt等安装路径这些都会被定死,而且我编译时跳过或者没有启用的模块将会无法使用。

  • 安装 Qt5.9.0 MinGW 版本

  • 前往百度云,下载压缩包:

    https://pan.baidu.com/s/1o8LmUy2
  • 解压 openssl-1.0.1c_static_w32_mingw.zipC:\Dev 目录

  • 解压 Qt5.9.0_MinGW_static.part1.rarC:\Qt 目录

  • 转跳至本文的 套件配置 ,然后配置套件,接着直接使用就可以了


准备步骤


如果你希望自己编译Qt,可以从这里开始看

  • 下载Qt

    5.9开始,Qt在Windows上的安装包合并了,只有一个版本。就是 Qt 5.9.0 for Windows (2.3 GB),安装的时候再选择不同的套件。下载地址如下:

    • 官网地址(需要登录Qt账号):

      https://www.qt.io/download-open-source/#section-3
    • exe下载地址:

      http://download.qt.io/official_releases/qt/5.9/5.9.0/qt-opensource-windows-x86-5.9.0.exe
  • 安装Qt

    • 选择路径

    这里写图片描述

    • 选择套件

    这里写图片描述

    我这里选择了Android,是因为我要用,不需要的同学可以不选择。

  • 准备OpenSSL库

    我配置的是1.0.1c版本的OpenSSL,关于OpenSSL的编译我不建议自己进行,比较麻烦。我是到这里直接下载OpenSSL的编译结果的:

    http://www.cnblogs.com/findumars/p/6372223.html

    下载后解压OpenSSL的zip压缩包(openssl-1.0.1c_static_w32_mingw.zip)到 C:\Dev 目录下

  • 安装Perl

    我选择的是:ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi

    • 安装包:
      http://downloads.activestate.com/ActivePerl/releases/5.22.1.2201/ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi

    这个资源貌似官网已经没了,链接直接打开后就报错,但是丢到迅雷里任然可以正常下载

    • 官网地址:

    http://www.activestate.com/activeperl/downloadsc

  • 安装 Python

    我选择的是:python-3.5.1.exe

    • 安装包:

    https://www.python.org/ftp/python/3.5.1/python-3.5.1.exe

    • 官网地址:

    https://www.python.org/downloads/

    安装好Python后,将安装目录添加到PATH环境变量中(安装的时候如果选上“Add Python 3.5 to PATH”会自动添加)

  • 检查

    运行Qt的命令行工具

    输入以下命令看看 gcc 编译器是否配置正确

    gcc -v

    再输入以下命令看看 perl 解释器是否配置正确

    perl -v

    输入以下命令看看 python 是否配置正确

    python

    按 Ctrl + Z 回车,可以退出 python


编译Qt


  • 打开Qt命令行工具

  • cd到源码目录

    cd C:\Qt\Qt5.9.0_MinGW\5.9\Src

  • 配置Qt,准备编译

    我这里跳过了一些模块,如果你需要这些模块,在自己编译的时候可以去掉skip

    configure.bat -static -release -platform win32-g++ -prefix "C:\Qt\Qt5.9.0_MinGW_static" -qt-sqlite -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -openssl-linked -opensource -confirm-license -make libs 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 -nomake tools -nomake examples -nomake tests -skip qt3d -skip qtcanvas3d -skip qtcanvas3d -skip qtdatavis3d -skip qtlocation -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -skip qtwebview -skip qtwinextras
  • 查看输出结果
    根据自己需求,查看对应的模块是否正常

    • Desktop OpenGL ....................... yes

      OpenGL正常

    • OpenSSL ................................ yes

      OpenSSL正常

    • Qt Sql ................................. yes

      Sql模块正常

    • SQLite ................................. yes

      SQLite正常

    • MySql .................................. no

      MySql不正常,因为我没有装MySql开发环境,那么编译出来的Qt是无法正常连接到MySql的

  • 编译Qt

    为了避免一些奇怪的问题,我使用单线程编译

    编译非常慢,请至少准备几个小时的空余时间

    如果你使用的是Win10请注意不要让Win10的更新后的自动重启打断编译,我编译了一半的时候就差点被Win10自动重启了

    mingw32-make

  • 安装Qt

    mingw32-make install


修复一些小问题


  • 修改编译配置

    打开文件 C:\Qt\5.9.0_MinGW_static\mkspecs\win32-g++\qmake.conf

    找到 QMAKE_LFLAGS_DLL

    将后面都改成 -static

    再加一行 QMAKE_LFLAGS

    后面也改成 -static

    这里写图片描述

  • 拷贝qml文件

    因为一些我还没了解的原因,编译出来的Qt,在qml目录是没有.qml文件,如下图,左边为静态编译版本Qt,右边为普通的版本。qml文件一个都没有。所以,这些qml文件都需要手动拷贝下。

    这里写图片描述


套件配置


  • 打开QtCreator

  • 选择上方工具栏中的 -> 工具 -> 选项 -> 构建和运行

  • 在上方选项卡中选择 Qt Versions,并且点击右侧的添加

  • 打开qmake.exe,路径是:C:\Qt\Qt5.9.0_MinGW_static\bin\qmake.exe

这里写图片描述

  • 在上方选项卡中选择 构建套件 ,然后配置一个新的套件,参数如下

这里写图片描述


使用


  • 创建工程,使用新配置的套件

这里写图片描述

  • 左下角,切换到release模式,直接编译

这里写图片描述

  • 查看编译结果,运行

这里写图片描述

猜你喜欢

转载自blog.csdn.net/wsj18808050/article/details/72862478