首先是准備工作,去QT主頁下載獨立的QT類庫安裝包以及完整QT SDK安裝包,還有QT Creator for windows 版
下載地址:http://qt.nokia.com/downloads-cn 最新是 4.7.4 版
還有一個mingw 4.4.5 靜態編譯版,用來解決mingwm10.dll、 libgcc_s_dw2-1.dll,兩個DLL依賴的問題
下載地址是:http://code.google.com/p/qp-gcc/downloads/list
四個文件分別是:
(1) qt-creator-win-opensource-2.3.1.exe // IDE 開發框架
(2) qt-win-opensource-4.7.4-mingw.exe // QT類庫安裝包
(3) Qt_SDK_Win_offline_v1_1_3_en.exe // QT SDK 完整安裝包
(4) mingw-static-4.4.5-all.7z // mingw 靜態編譯完整版
准備好上面四個文件之后,就可以安裝了,安裝順序以上面的(1)--(4)的順序進行安裝
下面說一下安裝時需要注意的地方,
第一步:安裝的是 qt-creator,安裝的時候記得把它自帶的 mingw 編譯器選上(主要是為了這個 mingw 編譯器)。假如默認安裝到:C:\Qt\qtcreator-2.3.1
第二步:就是安裝 QT 獨立類庫,由於它不包含編譯器,因此在安裝的時候有個選項,要你選擇 mingw 編譯器的路徑,
指向 C:\Qt\qtcreator-2.3.1\mingw 目錄就可以了。假如默認安裝到:C:\Qt\4.7.4
第三步:就是安裝完整版的QT SDK,默認安裝到:C:\QtSDK
好了,接下來就是關鍵的靜態編譯了,打開 C:\Qt\4.7.4\mkspecs\win32-g++ 目錄下的 qmake.conf 文件,
修改兩個地方:
QMAKE_LFLAGS =
修改為
QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import-Wl,-enable-runtime-pseudo-reloc
再將
QMAKE_LFLAGS_DLL = -shared
修改為
QMAKE_LFLAGS_DLL = -static
然后打開“開始菜單”-->“程序”-->“Qt by Nokia v4.7.4 (MinGW OpenSource)”菜單下面的 Qt 4.7.4 Command Prompt 也就是QT 命令行,
先配置編譯選項,然后再開始編譯,這是命令行提示符停留在:C:\Qt\4.7.4 路徑,輸入以下配置命令:
configure -platform win32-g++ -release -opensource-static -fast -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support -qt-zlib -qt-gif-qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -qt-style-windowsxp-qt-style-windowsvista -nomake examples -nomake docs -nomake demos
等待配置完成后,進入 src 目錄,並進行編譯,輸入如下命令:
cd src // 進入源碼目錄
mingw32-make -i -k // 進行靜態編譯
等待幾十分鍾后就能編譯成功,之后就可以進行第四步了。
第四步:把下載的 mingw 靜態編譯版的編譯器 mingw-static-4.4.5-all.7z 解壓到 C:\QtSDK\mingw 目錄,為什么?
因為我們要用第三步安裝的完整版的QT SDK中帶的 qt-creator IDE來進行開發,而不是第一步安裝的 qt-creator。
最后的設置,打開 qt-creator 之后,點擊“工具”-->“選項”對話框,點擊左邊的“Qt4”選項,就能看到IDE自動檢測到
的 qmake ,但是自動檢測的 qmake 只能生成動態編譯的程序,現在我們點擊右上角的“添加”按鈕,找到路徑
C:\Qt\4.7.4\bin ,選中該路徑中的 qmake.exe 文件,並命名為 “Qt 4.7.4 靜態編譯”,然后確定就完成了最后的設置。
現在我們來新建一個Qt Gui 應用,在目標設置的時候選擇“桌面”,可以看到默認的動態MinGw編譯器,以及我們自己
命名的靜態MinGW編譯器,如下圖,記得靜態編譯的調試是無法生成的,因為我沒有把調試也進行靜態編譯,只是把
發布進行靜態編譯了。雖然安裝占用的空間比較大,但是省卻了要調試的時候去修改Makefile.Debug文件的麻煩。
http://blog.csdn.net/mznewfacer/article/details/6990717