MinGW
MinGW(MinimalistGNU forWindows), 閣稱mingw 三十二,是將 GCC 編譯器佮 GNU Binutils 徙栽到 Win 三十二平台跤的產物,包括一系列標頭檔(Win 三十二 API)、 函式庫佮會當執行檔。
另外有通用佇產生三十二位元及六十四位元 Windows 可執行檔的MinGW-w 六十四專案,是對原本 MinGW 產生的分支。如今已經獨立發展。
歷史
MinGW 是對 Cygwin(一孵三 . 三版)基礎上發展來。
程式語言支援
GCC 支援的語言多多佇 MinGW 嘛受支援,內底涵蓋 C、C + +、Objective-C、Fortran 佮 Ada。
對於 C 語言以外的語言,MinGW 使用標準的 GNU 來執行的時函式庫,如 C + + 使用 GNU libstdc + +。
猶毋過 MinGW 使用 Windows 中的 C 來執行的時函式庫。所以用 MinGW 開發的程式無需要額外的第三方 DLL 支援就會當直接佇 Windows 下執行,而且嘛無一定愛遵對 GPL 授權條款。這个同時造成矣 MinGW 開發的程式只會使使用 Win 三十二 API 佮跨平台第三方函式庫,煞欠缺 POSIX 支援,大多數啦 GNU 軟體無法度佇無修改原始碼的狀況之下用 MinGW 編譯。
組件
MinGW 支援根據 ` < name > . lib ` 和 ` < name > . dll ` 號名的動態函式庫,以及遵循 Unix 佮類 Unix 系統當中捷看著的 ` lib < name > . a ` 號名約定的靜態函式庫。
此外,MinGW 的一个予人叫做 _ MSYS _ ( _ 上小系統 _ ) 的組件提供一个輕量級類 Unix shell 環境的 Windows 埠頭,包括講 rxvt 佮一寡足以使的 autoconf 指令碼執行的 POSIX 工具,毋過伊無提供 C 編譯器抑是區分大細寫的檔案系統。
佮 Cygwin 比較
Cygwin 佮 MinGW 攏會當用來徙栽 Unix 軟體到 Windows,毋過𪜶用較截然無仝的實作。Cygwin 旨咧提供一个完整的 POSIX 層,包括主流 Unix 的系統呼叫佮函式庫實作;其實重視相容性優先佇咧效能。相對的乎,MinGW 是重簡化佮效能。所以,伊並無欲提供某一寡歹用 Windows API 實作的 POSIX API,比如講 ` fork ( ) `,` mmap ( ) ` 和 ` ioctl ( ) `。用迒平台函式庫來寫應用的程式,若函式庫本身已經徙栽到 MinGW(比如講 SDL、wxWidgets、Qt 抑是 GTK +), 則遐的應用程式通常嘛容易用 MinGW 編譯。
用 Cygwin 寫成的 Windows 程式,因為是執行佇咧公共著作權的相容 DLL 上,所以乎 DLL 必須隨著程式原始碼做伙發布。MinGW 則無需要相容層,因為是因為 MinGW 的程式是直接呼叫 Windows API 編譯的。
MinGW 配搭 MSYS 會當產生一个小煞完整的執行環境,予程式會當載入隨身裝置當中,煞無振動著登錄檔或者是產生額外檔案。
佇咧 POSIX 系統下,用 MinGW-GCC 交叉編譯 Windows 應用程式嘛會用得的。這意味開發者無需要安裝 Windows 佮 MSYS 才會當編譯 Windows 軟體,抑是 Windows + Cygwin 軟體。
異常機制
MinGW 編譯器佇咧實作異常機制的時陣,有三種可選方式:
- SJLJ ( setjmp / longjmp ):可以六十四分之三十二位元,不過無影較俗的:就算講毋擲還異常,猶是會有一定的效能損失(上䆀情形下~嘿百分之十五)。
- DWARF ( DW 二 , dwarf 鋪二 ):只會當用三十二位元,無永久的執行的時陣開銷,需要呼叫堆疊是 dwarf-enabled,這意味著各樣對於 Windows system DLLs 抑是 Visual Studio 編譯的 DLLs 的異常袂使予人擲捒去。
- SEH:零開銷。
MinGW-w 六十四
MinGW-w 六十四是二空空五年由 OneVision Software 根據淨室設計原則而且獨立開發,以解決彼當陣的 MinGW 專案閣較新勻勻仔,欠新的重要的 API 閣有六十四位元支援。二空空八年 MinGW-w 六十四專案開源,由 Kai Tietz 維護。
- SourceForge . net 上的 MinGW-w 六十四官方的下載站點提供由 MinGW-Builds 等專案組製作的預編譯版。編譯器分六十四位元版佮三十二位元版、分別包括 sjlj、drawf、seh 例外處理機制、分別支援 POSIX 執行緒模式抑是 Win 三十二執行緒模式。使用者會當根據需要下載無仝版本。比如講,六十四位箍的 seh、POSIX 執行緒的上新穩定版本的 gcc 套件的下載 kha-tá-lok-guh 為:Toolchains targetting Win 六十四 → Personal Builds → mingw-builds → 七鼗三 . 零 → threads-posix → seh
非官方編譯器整合安裝套件
誠濟非官方組織提供了包括一系列整合工具鏈的 MinGW 安裝套件。其中大部份攏是因為 MinGW-w 六十四專案。
- TDM-MinGW GCC MinGW 編譯器安裝套件,整合三十二位元、六十四位箍的 GCC 五孵一 . 零 c / c + + / fortran 編譯器等等。
- 六十四位元 Win 三十二執行緒模式。特色是包含真濟第三方函式庫,如 boost、libpng、zlib、coreutils、grep、make、w 三十二 api、sed、git 等咧;而且為上新的 GCC 版本。
- MinGW package installer from Equation . com 該網站提供三十二位元和六十四位元的 GCC 以及 nightly snapshot 版本的安裝套件,以及 gdb 的 nightly snapshot 安裝套件。
- MinGW-w 六十四-for 三十二 and 六十四 bit Windows 上新的 nightly snapshot 的編譯以後的軟體。但是敢若無整合 iconv ?
參見
- Cygwin
- POSIX
參考資料
外部連結
- MinGW 官方網站。
- OSDN 上的 MinGW 官方的下載站點。