閱讀820 返回首頁    go 技術社區[雲棲]


靜態編譯Qt4.4.3

 

   在windows下安裝Qt的庫非常方便,編譯的環境選擇了minGW,因為它完全將linux下的編譯環境移植到了windows中。直接下載qt- win-opensource-4.4.3-mingw.exe,可以直接雙擊進行安裝(不過在正式安裝之前,需要將自己解壓並釋放到windows的C 盤,需要大概1.4GB,剛開始就是因為C盤的空間不夠,導致安裝程序抽取自己的時候失敗。)安裝好了之後,可以再去下載一個Qt的集成開發環境—— QDevelop。這樣直接打開linux裏寫好的工程選擇重新編譯就可以了。
    但是這個編譯生成的程序是通過動態鏈接的,對方係統中必須有QtCore4.dll和QtGui4.dll這兩個動態鏈接庫(程序隻使用了Qt的這兩部分)還有mingwm10.dll(minGW在調用線程庫之後需要用到)。而這些庫的大小就有12.4MB。
    因此,最好的辦法是提交一個靜態鏈接的程序。但是安裝的Qt是動態編譯的,要生成靜態的版本,就需要自己重新進行編譯。(編譯辦法參考 https://wiki.qtcentre.org/index.php?title=Building_static_Qt_on_Windows)
    首先需要修改位於<QTDIR>/mkspecs/win32-g++ 下的qmake.conf,在QMAKE_LFLAGS標簽中增加-static。然後在“開始”菜單中運行Qt 4.4.3 Command Prompt程序,會啟動一個命令行界麵。再裏麵打入configure -static -release -no-exceptions。接受裏麵提到的許可之後,就會開始編譯生成qmake並進行配置。配置完成以後,再輸入mingw32-make sub-src。這樣就開始對Qt進行編譯,這步需要很長時間(我上了兩節課,回來已經編譯好了)。
    然後再像以前這樣重新編譯和生成自己寫的程序,這樣的生成的可執行程序就是使用靜態鏈接的,可以直接在未安裝Qt的電腦上運行。這樣的副作用就是,可執行 文件變得非常大,有6.81MB!動態鏈接的版本隻有82.5KB。當然,如果加上那些依賴的動態鏈接庫,靜態鏈接的程序在體積上還是有優勢的。
   詳細步驟見:https://wiki.qtcentre.org/index.php?title=Building_static_Qt_on_Windows

最後更新:2017-04-02 03:42:38

  上一篇:go QT4靜態編譯後,編譯程序總是通不過,提示“ error: collect2: ld returned 1 exit status”
  下一篇:go 矩陣的行序和列序存儲