Loading AI tools
适用于Windows的GNU工具链的实现 来自维基百科,自由的百科全书
MinGW(Minimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。
原作者 | Colin Peters |
---|---|
开发者 | MinGW Project |
首次发布 | 1998年7月1日 |
当前版本 |
|
操作系统 | Microsoft Windows |
类型 | 编译器 |
许可协议 | 公有领域(头文件), GPL(编译器与工具链) |
网站 | osdn mingw |
另有可用于产生32位及64位Windows可执行文件的MinGW-w64项目,是从原本MinGW产生的分支[2]。如今已经独立发展[3]。
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支持根据<name>.lib
和<name>.dll
命名的动态库,以及遵循Unix和类Unix系统中常见的lib<name>.a
命名约定的静态库。
此外,MinGW的一个被称为MSYS(最小系统)的组件提供了一个轻量级类Unix shell环境的Windows端口,包括rxvt和一些足以使autoconf脚本运行的POSIX工具[5],但它不提供C编译器或区分大小写的文件系统[6]。
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编译器在实现异常机制时,有三种可选方式:
MinGW-w64是2005年由OneVision Software根据洁净室设计原则而独立开发,以解决当时的MinGW项目更新缓慢,缺少新的重要的API以及64位支持。2008年MinGW-w64项目开源,由Kai Tietz维护。
很多非官方组织提供了包含一系列集成工具链的MinGW安装包。其中大部分基于MinGW-w64项目。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.