1. 程式人生 > win教程 > Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)

Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)

概述

5月31號,Qt這一次竟然沒跳票,如約釋出了LTS的5.9

感覺這一次5.9用的人會很多,畢竟LTS,而且確實改進很大,所以這一次完整的寫一遍靜態編譯的步驟

我這裡只涉及MinGW版本的靜態編譯,包含OpenSSL,不包含MySql

我使用的是 Windows10 64bit 作業系統

直接使用我的編譯成果

這個最為簡單,不需要自己編譯Qt,但是Qt等安裝路徑這些都會被定死,而且我編譯時跳過或者沒有啟用的模組將會無法使用。

  • 安裝 Qt5.9.0 MinGW 版本

  • 前往百度雲,下載壓縮包:

    https://pan.baidu.com/s/1o8LmUy2
  • 解壓 openssl-1.0.1c_static_w32_mingw.zip 到 C:/Dev 目錄

  • 解壓 Qt5.9.0_MinGW_static.part1.rar 到 C:/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

    • 選擇路徑

    Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)_Windows

    • 選擇套件

    Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)_Windows

    我這裡選擇了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

    Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)_Windows

  • 拷貝qml檔案

    因為一些我還沒了解的原因,編譯出來的Qt,在qml目錄是沒有.qml檔案,如下圖,左邊為靜態編譯版本Qt,右邊為普通的版本。qml檔案一個都沒有。所以,這些qml檔案都需要手動拷貝下。

    Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)_Windows

套件配置
  • 開啟QtCreator

  • 選擇上方工具欄中的 -> 工具 -> 選項 -> 構建和執行

  • 在上方選項卡中選擇 Qt Versions,並且點選右側的新增

  • 開啟qmake.exe,路徑是:C:/Qt/Qt5.9.0_MinGW_static/bin/qmake.exe

Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)_Windows

  • 在上方選項卡中選擇 構建套件 ,然後配置一個新的套件,引數如下

Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)_Windows

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

Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)_Windows

  • 左下角,切換到release模式,直接編譯

Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)_Windows

  • 檢視編譯結果,執行

Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)_Windows