qt如何靜態編譯程序


很多時候,我們發布程序的時候,在沒有qt依賴環境的地方,都需要將qt所依賴的動態庫加入項目同路徑.

這樣會讓強迫症的碼農感覺很麻煩.要想一個exe走天下,我們就會想到靜態編譯了.

 

下面是具體實現步驟:

1.編譯靜態版本的qt庫.

2.構建靜態編譯環境.

3.生成靜態版本exe

 

編譯靜態qt庫:

這里默認大家都已經安裝了qt. 我編譯的事mingw32版本的.msvc大體參考吧.

首先檢查自己是否安裝了peal和python以及gcc環境.

 

進入截圖所示窗口,分別輸入python  gcc -v  perl -v 看是否有對應的版本信息,

若無.請安裝對應的軟件並添加環境變量.安裝過程中可將自動添加環境變量勾選.

 

這一步好了之后我們開始配置編譯

在自己的qt環境里面新建mingw49_32_static文件夾.並從上圖的cmd窗口移動到新建的文件夾內執行下面的配置項  ps:路徑按實際值替換

H:\Qt5.6.3\5.6.3\Src\qtbase\configure -confirm-license -opensource -platform win32-g++ -debug-and-release -static -static-runtime -nomake examples -nomake tests -skip qtwebengine -prefix "H:\Qt5.6.3\5.6.3\mingw49_32_static" -opengl desktop -no-angle

大概解釋下上面配置的含義:

-confirm-license:    自動確認許可證(使用開源或是商業)

-opensource:         編譯並鏈接Qt的開源版本。

-platform win32-g++:   選擇的編譯版本

-debug-and-release:   兩個版本均可靜態編譯.

-static:          創建並使用qt靜態庫

-static-runtime:       靜態鏈接C/ c++運行時庫

-nomake examples:          不編譯例子

-skip qtwebengine:   從構建中排除qtwebengine模塊

-prefix:            部署目錄 

-opengl desktop:             啟用 OpenGL 支持.不帶參數時,這將會嘗試自動檢測的                OpenGL ES 2.0 和更高版本,或常規的桌面版OpenGL. 

-no-angle:                  直接使用OpenGL的API進行渲染,需要顯卡廠商支持                      OpenGL ES 2.0 

 

如果需要添加或刪減更多功能.請遵循config文檔查閱即可. 

這步沒出錯的話繼續執行下面的命令:編譯

mingw32-make -j2   后面j2表示雙線程編譯.視電腦好壞可多開線程提升編譯速度.

接下來執行安裝命令

mingw32-make install

這些都完成以后

用記事本打開 H:\Qt5.6.3\5.6.3\mingw49_32_static\mkspecs\win32-g++\qmake.conf
找到 QMAKE_LFLAGS 和 QMAKE_LFLAGS_DLL將后面都改成 -static

最后找到H:\Qt5.6.3\5.6.3\mingw49_32\bin\qt.conf   將靜態庫里面的H:\Qt5.6.3\5.6.3\mingw49_32_static\bin的qt.conf  替換保存

不出意外的話靜態版本編譯環境就完成了.

 

剩下的就是 打開Qt Creator -> 工具 -> 選項 -> 構件和運行 -> Qt Versions.配置我們編譯好的靜態環境. 可以愉快的靜態編譯了.

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM