MinGW-w64
MinGW-w64是自由及開放原始碼軟體開發環境,用於創建Microsoft Windows應用程式。從2005–2008從MinGW(Minimalist GNU for Windows)分支出來。
原作者 | OneVision Software |
---|---|
開發者 | Kai Tietz, Jonathan Yong, 多位GNU貢獻者 |
首次發布 | 2005年 |
當前版本 | 8.0.0[1](2020年9月18日 ) |
程式語言 | C, C++ |
作業系統 | Microsoft Windows |
類型 | 編譯器 |
許可協議 | 公有領域 (頭文件), GNU通用公共許可證 (編譯器與工具鏈), Zope公共許可證 |
網站 | mingw-w64 |
MinGW-w64包括對GCC、GNU Binutils的Windows版本的移植(彙編器、連結器、庫文件管理器),一套自由可分發的Windows特定的頭文件與靜態導入庫以使用Windows API,一個 Windows本地版本的GNU的調試器,以及其它多種工具。
MinGW-w64可運行於本地Microsoft Windows平台,"cross-native"在MSYS2或Cygwin。MinGW-w64能生成32-或64-位可執行程序,運行於i686-w64-mingw32
或x86_64-w64-mingw32
目標平台。
歷史
2005年, OneVision Software遵照淨室設計原則,開始開發MinGW-w64,因為最初的MinGW項目更新太慢,遲遲不支持64位環境開發。2008年,OneVision捐獻這個項目給開源社區。[2][3][4]
MinGW-w64提供了更全面的Win32 API支持,[5]包括:
- 更好的C99支持
- POSIX執行緒 (pthreads)支持
- GCC multilib, 允許同時安裝32位與64位庫
- Unicode入口點 (wmain/wWinMain)
- DDK (來自ReactOS)
- DirectX (來自Wine)
- 大文件支持
- Win64支持
- 在x86-64(從gcc 4.8+)上,結構化異常處理(SEH)代替DWARF或sjlj
- 一些有用工具如
gendef
,widl
(一個MIDL編譯器來自Wine)
MinGW-w64還維護winpthreads,一個包裝庫類似於pthreads-win32, 實現了C++11執行緒庫<thread>
, <future>
, <mutex>
。
MSYS2
MSYS2 ("minimal system 2")是用於Microsoft Windows的軟體發布與開發平台,基於MinGW-w64與Cygwin,把Unix環境中的代碼移植到Windows。[6]
編譯器
GCC支持的大多數程式語言也被MinGW-w64移植支持。包括C、C++、Objective-C、Objective-C++、Fortran、Ada。使用了GCC運行時刻庫(libstdc++用於C++,libgfortran用於Fortran,等等)。MSYS2提供了LLVM的clang的包裝。 支持Windows版ARM(aarch64-w64-mingw32
與armv7-w64-mingw32
)。[7][8]
不同C++編譯器(如Mindw-w64 GCC與Visual Studio)產生的二進制可執行程序一般互不兼容,因為使用了不同的ABI與名字修飾導致了C++運行時的差異。但被編譯的C代碼是連結時兼容的。[9] Clang是個例外,它廣泛支持了MSVC'的C++ ABI。[10]
參考文獻
- ^ MinGW-w64 version history. MinGW-w64 site. [2020-11-21]. (原始內容存檔於2020-11-29).
- ^ (MinGW-w64) History. MinGW-w64 Wiki. [2016-02-18]. (原始內容存檔於2019-07-05).
- ^ Marshall, Keith. Re: Harmonizing mingwrt / w32api with mingw-w64. MinGW-dvlpr (郵件列表). 19 July 2009 [12 June 2014]. (原始內容存檔於2020-01-28).
However, we would require a formal audit of mingw-64 code, to ensure conformance with our requirements for truly open documentation of sources, before [merge of mingw-w64] could be completed.
- ^ Tietz, Kai. Re: Harmonizing mingwrt / w32api with mingw-w64. MinGW-dvlpr (郵件列表). 20 July 2014 [12 June 2014]. (原始內容存檔於2020-01-28).
- ^ MinGW-w64. MinGW-w64.org. [30 May 2013]. (原始內容存檔於2019-10-18).
- ^ MSYS2: official homepage (頁面存檔備份,存於網際網路檔案館), code repository (頁面存檔備份,存於網際網路檔案館)
- ^ Package: mingw-w64-x86_64-clang. MSYS2 Packages. [12 February 2020]. (原始內容存檔於2020-10-30).
- ^ Storsjö, Martin. mstorsjo/llvm-mingw. 23 April 2020 [2020-06-02]. (原始內容存檔於2020-11-29).
- ^ 存档副本. [2020-06-02]. (原始內容存檔於2020-11-30).
- ^ MSVC compatibility. Clang 11 documentation. [2020-06-02]. (原始內容存檔於2021-01-26).