fbpx
维基百科

MinGW

MinGWMinimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、函式庫可执行文件

MinGW
原作者Colin Peters
開發者MinGW Project
首次发布1998年7月1日,​25年前​(1998-07-01
当前版本
  • 11.0.1 (2023年4月29日;穩定版本)[1]
操作系统Microsoft Windows
类型編譯器
许可协议公有領域標頭檔),
GPL編譯器工具鏈
网站osdn.net/projects/mingw/ (project page, still active)
mingw.osdn.io (inactive and broken; former domain of mingw.org has expired)

另有可用于产生32位及64位Windows可执行文件的MinGW-w64项目,是从原本MinGW产生的分支[2]。如今已经独立发展[3]

历史 编辑

MinGW是从Cygwin(1.3.3版)基础上发展而来。

编程语言支持 编辑

GCC支援的語言大多在MinGW也受支援,其中涵蓋CC++Objective-CFortranAda

对于C语言之外的语言,MinGW使用标准的GNU运行时库,如C++使用GNU libstdc++

但是MinGW使用Windows中的C运行时库。因此用MinGW开发的程序不需要额外的第三方DLL支持就可以直接在Windows下运行,而且也不一定必须遵从GPL许可证。这同时造成了MinGW开发的程序只能使用Win32API和跨平台的第三方库,而缺少POSIX支持[4],大多数GNU软件无法在不修改源代码的情况下用MinGW编译。

组件 编辑

MinGW支持根据<name>.lib<name>.dll命名的动态库,以及遵循Unix和类Unix系统中常见的lib<name>.a命名约定的静态库。

此外,MinGW的一个被称为MSYS(最小系统)的组件提供了一个轻量级类Unix shell环境的Windows端口,包括rxvt英语rxvt和一些足以使autoconf脚本运行的POSIX工具[5],但它不提供C编译器或区分大小写的文件系统[6]

与Cygwin比较 编辑

Cygwin 與 MinGW 皆可用來移植 Unix 软件到 Windows,但它们采用截然不同的實作。Cygwin 旨在提供一个完整的 POSIX 层,包括主流 Unix 的系統呼叫及函式庫實作;其重视兼容性优先于性能。相對的,MinGW 則着重简化与性能。因此,它並不提供某些難以用 Windows API 实现的 POSIX API,例如 fork()mmap()ioctl()。使用跨平台函式庫寫成的應用程式,若函式庫本身已移植到了 MinGW(例如 SDLwxWidgetsQtGTK+),則那些應用程式通常也容易用 MinGW 編譯。

用 Cygwin 寫成的 Windows 程序,因為是執行在公共版權的兼容 DLL 上,所以 DLL 必須隨著程序源代碼一起發布。MinGW 則不需要兼容层,因為基於 MinGW 的程序是直接调用 Windows API 编译的。

MinGW 搭配 MSYS 可以產生一個小卻完整的執行環境,讓程式可以装入隨身裝置當中,而不需要修改注册表或產生額外檔案。

在 POSIX 系統下,用 MinGW-GCC 交叉編譯 Windows 應用程式也是可行的。這意味著開發者不需要安裝 Windows 與 MSYS 就能編譯 Windows 軟件,或 Windows+Cygwin 軟件。

异常机制 编辑

MinGW编译器在实现异常机制时,有三种可选方式:

  • SJLJ (setjmp/longjmp):可用于32/64位,但不是零代价的:即使不抛出异常,仍会有一定的性能损失(在最差情形下~15%)。
  • DWARF (DW2, dwarf-2):只能用于32位,没有永久的运行时开销,需要呼叫堆疊是dwarf-enabled,这意味着异常对于Windows system DLLs或Visual Studio编译的DLLs的异常不能被抛出。
  • SEH:零開销。

MinGW-w64 编辑

MinGW-w64是2005年由OneVision Software根据洁净室设计原则而独立开发,以解决当时的MinGW项目更新缓慢,缺少新的重要的API以及64位支持。2008年MinGW-w64项目开源,由Kai Tietz维护。

  • SourceForge.net上的MinGW-w64官方的下载站点 提供由MinGW-Builds等项目组制作的预编译版。编译器分64位版和32位版、分别包含sjlj、drawf、seh异常处理机制、分别支持POSIX线程模式或Win32线程模式。用户可根据需要下载不同版本。例如,64位的seh、POSIX线程的最新稳定版本的gcc套件的下载目录为:Toolchains targetting Win64 → Personal Builds → mingw-builds → 7.3.0 → threads-posix → seh

非官方编译器集成安装包 编辑

很多非官方组织提供了包含一系列整合工具链的MinGW安装包。其中大部分基于MinGW-w64项目。

  • TDM-MinGW GCC (页面存档备份,存于互联网档案馆) MinGW编译器安装包,集成了32位、64位的GCC 5.1.0 c/c++/fortran编译器等。
  • 64位Win32线程模式 (页面存档备份,存于互联网档案馆)。特色是包含很多第三方库,如boost、libpng、zlib、coreutils、grep、make、w32api、sed、git等等;且为最新的GCC版本。
  • MinGW package installer from Equation.com (页面存档备份,存于互联网档案馆) 该网站提供了32位和64位的GCC以及nightly snapshot版本的安装包,以及gdb的nightly snapshot安装包。
  • MinGW-w64 - for 32 and 64 bit Windows (页面存档备份,存于互联网档案馆) 最新的nightly snapshot的编译后的软件。但似乎没有集成iconv?

参见 编辑

参考资料 编辑

  1. ^ MinGW-w64 - for 32 and 64 bit Windows mingw-w64. 
  2. ^ History. MinGW-w64 Wiki. [30 May 2013]. (原始内容存档于2013年8月16日). 
  3. ^ Harmonizing mingwrt / w32api with mingw-w64. MinGW Mailing list. [30 May 2013]. (原始内容存档于2013-08-16). 
  4. ^ MinGW - Minimalist GNU for Windows. [2024-04-06]. (原始内容于2006-08-28). MinGW, being Minimalist, does not, and never will, attempt to provide a POSIX runtime environment for POSIX application deployment on MS-Windows. 
  5. ^ . MinGW.org. [2016-02-18]. (原始内容存档于2016-02-18). 
  6. ^ . MinGW.org. [2016-02-18]. (原始内容存档于2016-02-18). A common misunderstanding is MSYS is "UNIX on Windows", MSYS by itself does not contain a compiler or a C library, [...] nor does it provide any UNIX specific functionality like case-sensitive filenames. 

外部链接 编辑

mingw, minimalist, windows, 又称mingw32, 是将gcc编译器和gnu, binutils移植到win32, 平台下的产物, 包括一系列头文件, win32api, 函式庫和可执行文件, 原作者colin, peters開發者, project首次发布1998年7月1日, 25年前, 1998, 当前版本11, 2023年4月29日, 穩定版本, 操作系统microsoft, windows类型編譯器许可协议公有領域, 標頭檔, 編譯器與工具鏈, 网站osdn, projects, . MinGW Minimalist GNU for Windows 又称mingw32 是将GCC编译器和GNU Binutils移植到Win32 平台下的产物 包括一系列头文件 Win32API 函式庫和可执行文件 MinGW原作者Colin Peters開發者MinGW Project首次发布1998年7月1日 25年前 1998 07 01 当前版本11 0 1 2023年4月29日 穩定版本 1 操作系统Microsoft Windows类型編譯器许可协议公有領域 標頭檔 GPL 編譯器與工具鏈 网站osdn wbr net wbr projects wbr mingw wbr project page still active mingw wbr osdn wbr io inactive and broken former domain of mingw org has expired 另有可用于产生32位及64位Windows 可执行文件的MinGW w64项目 是从原本MinGW 产生的分支 2 如今已经独立发展 3 目录 1 历史 2 编程语言支持 3 组件 4 与Cygwin比较 5 异常机制 6 MinGW w64 7 非官方编译器集成安装包 8 参见 9 参考资料 10 外部链接历史 编辑MinGW是从Cygwin 1 3 3版 基础上发展而来 编程语言支持 编辑GCC支援的語言大多在MinGW也受支援 其中涵蓋C C Objective C Fortran及Ada 对于C语言之外的语言 MinGW使用标准的GNU运行时库 如C 使用GNU libstdc 但是MinGW使用Windows中的C运行时库 因此用MinGW开发的程序不需要额外的第三方DLL支持就可以直接在Windows下运行 而且也不一定必须遵从GPL许可证 这同时造成了MinGW开发的程序只能使用Win32API和跨平台的第三方库 而缺少POSIX支持 4 大多数GNU软件无法在不修改源代码的情况下用MinGW编译 组件 编辑MinGW支持根据 lt name gt lib和 lt name gt dll命名的动态库 以及遵循Unix和类Unix系统中常见的lib lt name gt a命名约定的静态库 此外 MinGW的一个被称为MSYS 最小系统 的组件提供了一个轻量级类Unix shell环境的Windows端口 包括rxvt 英语 rxvt 和一些足以使autoconf脚本运行的POSIX工具 5 但它不提供C编译器或区分大小写的文件系统 6 与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 可用于32 64位 但不是零代价的 即使不抛出异常 仍会有一定的性能损失 在最差情形下 15 DWARF DW2 dwarf 2 只能用于32位 没有永久的运行时开销 需要呼叫堆疊是dwarf enabled 这意味着异常对于Windows system DLLs或Visual Studio编译的DLLs的异常不能被抛出 SEH 零開销 MinGW w64 编辑主条目 MinGW w64 MinGW w64是2005年由OneVision Software根据洁净室设计原则而独立开发 以解决当时的MinGW项目更新缓慢 缺少新的重要的API以及64位支持 2008年MinGW w64项目开源 由Kai Tietz维护 SourceForge net上的MinGW w64官方的下载站点 提供由MinGW Builds等项目组制作的预编译版 编译器分64位版和32位版 分别包含sjlj drawf seh异常处理机制 分别支持POSIX线程模式或Win32线程模式 用户可根据需要下载不同版本 例如 64位的seh POSIX线程的最新稳定版本的gcc套件的下载目录为 Toolchains targetting Win64 Personal Builds mingw builds 7 3 0 threads posix seh非官方编译器集成安装包 编辑很多非官方组织提供了包含一系列整合工具链的MinGW安装包 其中大部分基于MinGW w64项目 TDM MinGW GCC 页面存档备份 存于互联网档案馆 MinGW编译器安装包 集成了32位 64位的GCC 5 1 0 c c fortran编译器等 64位Win32线程模式 页面存档备份 存于互联网档案馆 特色是包含很多第三方库 如boost libpng zlib coreutils grep make w32api sed git等等 且为最新的GCC版本 MinGW package installer from Equation com 页面存档备份 存于互联网档案馆 该网站提供了32位和64位的GCC以及nightly snapshot版本的安装包 以及gdb的nightly snapshot安装包 MinGW w64 for 32 and 64 bit Windows 页面存档备份 存于互联网档案馆 最新的nightly snapshot的编译后的软件 但似乎没有集成iconv 参见 编辑 nbsp 自由软件主题 Cygwin POSIX参考资料 编辑 MinGW w64 for 32 and 64 bit Windows mingw w64 History MinGW w64 Wiki 30 May 2013 原始内容存档于2013年8月16日 Harmonizing mingwrt w32api with mingw w64 MinGW Mailing list 30 May 2013 原始内容存档于2013 08 16 MinGW Minimalist GNU for Windows 2024 04 06 原始内容存档于2006 08 28 MinGW being Minimalist does not and never will attempt to provide a POSIX runtime environment for POSIX application deployment on MS Windows wiki MSYS MinGW org 2016 02 18 原始内容存档于2016 02 18 wiki MSYS MinGW org 2016 02 18 原始内容存档于2016 02 18 A common misunderstanding is MSYS is UNIX on Windows MSYS by itself does not contain a compiler or a C library nor does it provide any UNIX specific functionality like case sensitive filenames 外部链接 编辑MinGW 官方网站 页面存档备份 存于互联网档案馆 OSDN上的MinGW官方的下载站点 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title MinGW amp oldid 79941126, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。