QT的靜態編譯

2021-06-08 04:18:52 字數 700 閱讀 8354

qt預設的編譯方式是動態編譯的,但是有時候你編寫的程式要發布出去,帶很多動態庫檔案是很繁瑣的,此時就需要靜態編譯你的程式,qt要實現靜態編譯必須庫檔案也是靜態編譯的,可以用這個命令編譯靜態庫:

配置編譯選項

開啟 %qtdir%\mkspecs\win32-g++\qmake.conf (%qtdir%為qt庫所在目錄)

在qmake_lflags後面加上

-static -enable-stdcall-fixup -wl,-enable-auto-import -wl,-enable-runtime-pseudo-reloc

並將qmake_lflags_dll後面的

-shared 改為 -static

儲存並關閉

開啟 %qtdir%\src\corelib\tools\qlocale.cpp 把 #include 改為 #include <%mingw%/include/float.h> 例如:#include

win + r 開啟執行輸入 cmd 開啟命令列,切換到qt庫的目錄下,輸入命令: configure -static -debug-and-release -no-exceptions

根據提示輸入:o 確認

然後輸入:y 確認

等待3個多小時之後....編譯完成。

如果上面的編譯命令不加 sub-src 會全部編譯,把demo都編譯了,大概得用10+個小時。

qt的靜態編譯

在預設情況下,用qtcreator編譯程式時,使用的是動態編譯。但是動態編譯執行時會依賴多種的dll庫檔案,在打包的過程中也需要帶上一大堆的dll庫檔案,否則無法執行。靜態編譯可以將需要的庫檔案直接載入到程式中,打包時不需要帶各種庫檔案,且可執行檔案exe會比動態編譯的要小很多。參考鏈結檢視具體完成...

qt靜態編譯

qt靜態編譯出現以下問題怎麼解決呢?d qt 5.9.0 qtbase src corelib global qlibraryinfo.cpp fatal error c1853 qmake pch.pch 預編譯標頭檔案來自編譯器的早期版本,或者預編譯頭為 c 而在 c 中使用它 或相反 nmak...

Qt編譯生成靜態庫(靜態編譯)

開發環境 vs2008 qt4.8.4原始碼庫 其他環境請自己嘗試,原理應該是差不多的 qt編譯生成靜態庫1.本教程只針對在win32平台,使用vs開發工具 例子以vs2008為例 2.3.解壓qt源 到目標目錄,如 4.開啟 mkspecs 目錄,找到目標平台的資料夾,如 win32 msvc20...