原創 QT 4 8 靜態庫編譯方法

2022-08-30 09:48:13 字數 3394 閱讀 5780

最最初踏上qt之路是受到了xiaomagee的指點,相比於常規的視窗程式開發,qt有著以下特點:

1、  優良的跨平台特性(支援win、linux、mac 不同的平台下只需重新編譯即可使用)

2、  物件導向

3、  豐富的api

4、  支援2d/3d圖形渲染,支援opengl

5、  大量的開發文件(無需像vc一樣裝幾個g的msdn)

6、  xml支援

其實,僅僅是第一點,就足以讓我從vc轉向qt。並且在本人的學習過程中發現,qt可以很輕易就打造出漂亮的介面,實在是讓我愛不釋手。不論是打造一些實用小程式,或是開發上位機,qt都是很不錯的選擇!

之前用vc++的時候,只要是編譯出來的exe,就可以放到大多數的電腦上執行,而qt不同,由於qt預設是動態編譯,正常執行需要呼叫qt的標準庫(即.dll),因此要想脫離ide單獨執行,必須滿足:將關聯的dll拷貝至.exe同目錄(或system32資料夾內),或者在環境變數中新增qt標準庫的路徑。否則就會出現如下警告:

這就使得qt的通用性受到了侷限,尤其是用qt開發上位機時,如果需要在某台電腦上觀測資料,除了exe,還得拷貝一大堆dll過去,顯得很麻煩,那麼,有沒有辦法可以滿足,僅需要乙個exe檔案,就可以在所有裝有win系統下的電腦上執行呢?答案是肯定的!

這就需要將qt的標準庫進行靜態編譯。

ps:這裡選用的是windows系統下的qt sdk作為開發環境,如果用vs編譯,僅需在個別步驟稍作修改即可,本人不用vs很久,所以沒有親自測試。

一共需要下面3個安裝包

選擇離線安裝包

選擇mingw版的qt標準庫(vs版的對號入座)

qt4.8的標準庫編譯需要用到perl

步驟二:安裝軟體

1、  安裝qt sdk

目前qt已經被nokia收購,因此安裝包中會有很多手機程式的開發元件,如果不需要,按照下面給出的配置,去掉不需要的元件即可

首先在這一頁選擇「custom」

api部分全部去掉

「development tools」中選擇「qt creator」(預設)和「desktop qt」中的mingw版

個人判斷:這個庫用於qt的動態編譯,選擇安裝,即可在今後實現:除錯時使用動態庫,方便快捷;發布時使用靜態庫,便於使用。

這裡我又選擇了一遍mingw,保險起見:)

2、  安裝qt標準庫

這裡有一點要注意,安裝前的最後一步需要選擇mingw的安裝目錄,在qtsdk資料夾下

選擇mingw的資料夾即可

3、  安裝perl環境

一路狂點next即可

步驟三:標準庫的編譯

1、  配置編譯選項

1)開啟x:\qt\4.8.0\mkspecs\win32-g++\qmake.conf  (x為qt安裝碟符)

(建議先備份一下)

在qmake_lflags後面加上 –static

並將qmake_lflags_dll後面的 –shared 改為 –static

儲存並關閉

2)將x:\qt\4.8.0\bin 下的syncqt與syncqt.bat 這兩個檔案刪除或改名

否則在編譯時會提示找不到perl環境,如下圖所示

2、  開始編譯

開啟qt 4.8.0 command prompt軟體,輸入

configure –static –release –no-exceptions

ps:這個配置僅編譯release版本,如果需要同時需要靜態版的debug版本,需要把-release 改為 –debug-and-release

回車後會有版本選擇和使用者協議,先後按」o」(open source) 「y」(yes)

…………耐心等待一會…………

配置完成後會出現下面這個畫面:

————在開始這個步驟前,請確保你有至少2個小時的空閒時間————

接著輸入 mingw32-make sub-src

回車………該幹啥幹啥去吧…………直到你看到下面這個畫面:

ps:編譯過程中可以瀏覽網頁,可以刷微博聊qq,但不建議跑大型程式,否則會大幅降低編譯速度!!

當你看到這個畫面時,恭喜你,馬上就成功了~

步驟四:配置qt creator

開啟qt creator新建乙個工程,在project介面點選下圖所示的manage按鈕

點選add

進入目錄x:\qt\4.8.0\qmake 選擇qmake.exe 如下圖

底下的version name可以自己起(我用的qt 4.8.0 static)

返回project介面,新增剛才選擇的編譯器

選擇好之後,記得確認選擇的是qt4.8.0的release版本(靜態debug版沒有編譯,所以選擇該模式會出錯)

編譯一下,進入工程目錄,直接雙擊程式,完美執行!

至此,qt靜態編譯完成。

由於qt直接編譯出來的exe體積較大,為了節省空間,便於儲存與傳播,可以壓縮一下,這裡選用upx

拷貝upx.exe至c:\windows\system32目錄下

在cmd中輸入upx(+空格)(+檔案路徑+檔名)(+回車)

即可出現下圖

壓縮比例為39.93% 可見效果還是非常可觀的

至此,qt的靜態庫編譯全部完成。

為了保證教程的準確性,我在寫教程前,已將qt完整刪除並重新安裝編譯,每完成一步就寫一步的教程。我的編譯方法未必是最好的,但是按照我的方法,保證可以成功!

enjoy :)

ubuntu編譯Qt 4 8原始碼包

1 在編譯qt4.8原始碼包之前,首先編譯一下tslib,後面在配置qt原始碼包時需要制定tslib的路徑,否則可能出現觸控螢幕無法使用的情況。2 編譯tslib1.4 2.1 解壓tslib 1.4.tar.gz tar zxvf tslib 1.4.tar.gz 2.2 進入tslib目錄,au...

Qt4 8嵌入式版本的編譯移植(包含QML)

arm移植步驟 1 安裝交叉編譯器 a 解壓 b 環境變數設定 i.gedit root bashrc ii.export path 路徑 bin path iii.source root bashrc 2 安裝embeded庫 a 配置 echo yes configure prefix opt ...

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

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