1. 程式人生 > >Qt5.4.1 在Win7+MinGW-w64 v6.4.0環境下原始碼編譯64位庫檔案

Qt5.4.1 在Win7+MinGW-w64 v6.4.0環境下原始碼編譯64位庫檔案

1. 準備素材:

1.1  下載Qt原始碼包 qt-everywhere-opensource-src-5.4.1.zip ,   http://mirrors.ustc.edu.cn/qtproject/archive/qt提供了從Qt1.0到Qt5.9的所有釋出版本。謝謝科大映象站得意

1.3  Windows下建議先安裝DirectX,如果你需要使用qt的多媒體處理模組phonon

1.4  安裝MinGW-w64,注意一定是64位版本,https://sourceforge.net/projects/mingw-w64/, 下載線上安裝器,選擇目標平臺(x86_64\gcc版本\posix\...),將安裝目錄的bin目錄加入Path環境變數,

此處不表。

2. 設定Qt相關環境變數

2.1  將原始碼解壓後的的Qt目錄(下文記為$QT$)中的/qtbase/bin目錄追加到系統的Path環境變數中; 新建環境變數QTDIR值為 $QT$

2.2  新建QMAKESPEC=$編譯目標環境$, 原始碼編譯Qt提供了win32-msvc\win32-g++\linux-g++\linux-clang等多種構建環境,在64位win7+64位MinGW環境中選擇win32-g++. 該環境變數其實是編譯前執行Qt的configure會用到,如果此處嫌麻煩,也可以不新建QMAKESPEC環境變數,在configure的時候手動指定

3. 配置

.\configure -release  -fast  -shared  -opensource  -prefix $你想要安裝Qt的目錄$  -opengl desktop  -platform win32-g++ ;

configure的各項引數說明見http://doc.qt.io/qt-4.8/configure-options.html或者執行“.\configure.exe -h”, Qt4.8和Qt5.4的configure引數有一些變化。注意,prefix目錄的寫法,在windows下一定要寫成類似"C:/Qt/5.4.1"或者類似"C:\\Qt\\5.4.1"的記法。千萬不要在記為"/c/Qt/5.4.1"[雖然該記法在git-bash中有效,如果你剛好又是在git-bash中執行的configure,的確也能make和make install , 但後續新增qmake作為構建套件時會提示找不到類似/c/Qt.5.4.1路徑的錯誤]

4. 編譯

確保當前的mingw32-make 和 g++可執行檔案的確來自你的MinGW-w64目錄,尤其是當系統中有多個MinGW版本時,建議在git-bash中執行,可使用which ming32-make 和 which g++檢視ming32-make 和 g++的路徑。  執行mingw32-make -j8 , -j後面的引數指並行構建的任務數,類似linux中的make -j引數,一般取核數的1-2倍。

耐心等該編譯完成,i5筆記本大約編譯1一個小時敲打

5 .  部署庫檔案

編譯生成的庫檔案位於$QT$\qtbase目錄下,執行ming32-make install 或者直接使用,whatever.  可在qtcretor中新建構建套件(Qt5.4-64bit + MinGW-w64)測試編譯結果是否正常。

=======================================================

後記

=======================================================

之前一直試圖用MinGW原始碼編譯Qt4.8的windows64位庫檔案,無奈編譯過程總是出錯:

主要是__cpuid()函式錯誤:

configure成VS2010的工程檔案再使用VS編譯,生成webkit元件時會出錯。

以及其他一些莫名其妙的錯誤,遂放棄Qt4.8,改投Qt5.4 , 使用MinGW-w64編譯過程無錯誤。

=======================================================

參考連結:

=======================================================

http://doc.qt.io/qt-4.8/install-win.html

http://doc.qt.io/qt-4.8/configure-options.html

http://blog.csdn.net/feichizhongwu888/article/details/48969481

http://m.blog.csdn.net/Form_/article/details/77489328