Linux下編譯靜態MinGW環境,編譯windows平台Qt程序(使用MXE)


  • 參考鏈接:
  • MXE.
    >
    大多數程序都是在windows平台下開發的程序.windows 在現實中也是繞不過的一個系統平台,做為受過幾年VC,MFC”虐待”的程序員,在做為一個程序員之前是一位Linux重度使用者,受夠了MFC之后一直想要找一個框架替換,
    使用過GTK,wxWidgets,Qt,最后還是Qt用得多一些.我認為程序跨平台應該是一個基本標准,同一份代碼不需改動,或者改動極少,放在不同的平台下編譯就能使用.不同平台,同樣的界面,同樣的操作,同樣的體驗.
    這里要講的是我如何在Linux 下開發跨平台的Qt程序,如何在linux開發windows程序.
    >

MXE (M cross environment)

  • MXE 真的是一個了不起的項目,詳情請查看上面鏈接,非常詳細.因為MXE就是在Linux下靜態編譯的跨平台環境,不需要你一步一步繁雜的編譯工具鏈,直接按教程一鍵make就下載安裝好,但是對Linux的操作熟悉會更加好排錯.

安裝教程

  • 盡量查看英文教程,這里簡單記錄一在debian8 x86_64下的安裝過程.遇到問題找google.
1
2
3
4
5
6
7
 
apt-get install \
autoconf automake autopoint bash bison bzip2 flex gettext\
git g++ gperf intltool libffi-dev libgdk-pixbuf2.0-dev \
libtool libltdl-dev libssl-dev libxml-parser-perl make \
openssl p7zip-full patch perl pkg-config python ruby scons \
sed unzip wget xz-utils g++-multilib libc6-dev-i386 libtool-bin

獲取最新版本

1
2
3
$ cd /opt
$ git clone https://github.com/mxe/mxe.git
$ make MXE_TARGETS= 'x86_64-w64-mingw32.static i686-w64-mingw32.static' qt5
  • 如果中間不出錯,安裝完成如下. i686-w64-mingw32.static目錄下就在如:我電腦系統64位下編譯32位的exe, 而x86_64-w64-mingw32.static就是編譯生成64位的exe.
1
2
$ls /opt/mxe/usr/
bin i686-w64-mingw32.static include installed lib libexec share x86_64-unknown-linux-gnu x86_64-w64-mingw32.static

設置Qt

  • 英文教程有詳細教程如何使用,如:(autotools,CMake,Makefile,QT…),這里貼圖記錄一下在QtCreator 下的設置.

  • 設置編譯器

    設置編譯器設置編譯器
  • 設置Qt版本

    設置Qt版本設置Qt版本
  • 添加Qt Kit

    設置Qt版本設置Qt版本
  • 現在就可以在Qt Creator里的工程下添加這個Kit里了,因為這里只是靜態編了Release版本,如果指定為Debug配置,編譯會出錯的.

### 一些Qt 工程問題

Linux GL 鏈接庫錯誤.

  • 如果在Linux遇到鏈接系統下的GL庫出錯,只要在.pro 加入QMAKE_LIBS_OPENGL -= -lGL,重新qmake,編譯.

Release版本加入調試符號

  • 在實際開發有遇到這種問題,在Linux的編譯Debug,Release調試與運行都沒有錯誤,但是在windows平台下運就崩潰出錯,這時調試最有效的調試手段是是加入調試符號信息,在windows下運行GDB加載該程序,查看出錯的原因.pro \
  • 在.pro中在加如下三行,重新qmake,編譯.帶調試信息的exe會長到幾十M.
1
2
3
QMAKE_CXXFLAGS_RELEASE += -g
QMAKE_CFLAGS_RELEASE += -g
QMAKE_LFLAGS_RELEASE =

https://yjdwbj.github.io/2016/09/13/Linux%E4%B8%8B%E7%BC%96%E8%AF%91%E9%9D%99%E6%80%81MinGW%E7%8E%AF%E5%A2%83-%E7%BC%96%E8%AF%91windows%E5%B9%B3%E5%8F%B0Qt%E7%A8%8B%E5%BA%8F/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM