计算机科学

首页 > 计算机科学

MinGW

2018-08-31 09:38:25     所属分类:程序设计工具
MinGW
原作者 Colin Peters
开发者 MinGW Project
初始版本 1 July 1998
稳定版本
稳定版本
0.6.0 Beta
(2013年9月5日,​4年前​(2013-09-05
操作系统 Microsoft Windows
类型 编译器
许可协议 公有领域(头文件),
GPL(编译器与工具链)
网站 MinGW

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

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

目录

  • 1 历史
  • 2 编程语言支持
  • 3 与Cygwin比较
  • 4 异常机制
  • 5 外部链接
    • 5.1 官方链接
    • 5.2 MinGW-w64官方的下载站点
    • 5.3 非官方编译器集成安装包
  • 6 参见
  • 7 参考资料

历史

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支持[3],大多数GNU软件无法在不修改源代码的情况下用MinGW编译。

与Cygwin比较

Cygwin和MinGW都可用于将Unix软件移植到Windows,但它们采用不同的实作。 Cygwin旨在提供一个完整的POSIX层,包括所有主要Unix System_call。重视兼容性优先于性能。而MinGW着重简化与性能。因此,它没有提供某些无法套用Windows API轻松实现的POSIX API,例如fork(),mmap()和ioctl()。

用Cygwin编写的Windows程序所使用的DLL及其源代码必须随程序一起发布。 MinGW不需要兼容层,因为基于MinGW的程序是直接调用Windows API编译的。

异常机制

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

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

外部链接

官方链接

  • MinGW 官方网站。
  • SourceForge.net上的MinGW官方的下载站点(Win32系统)。

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等等。
  • 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?

参见

  • Cygwin
  • POSIX

参考资料

  1. ^ History. MinGW-w64 Wiki. [30 May 2013]. (原始内容存档于2013年8月16日). 
  2. ^ Harmonizing mingwrt / w32api with mingw-w64. MinGW Mailing list. [30 May 2013]. 
  3. ^ MinGW - Minimalist GNU for Windows. [2018-08-31]. MinGW, being Minimalist, does not, and never will, attempt to provide a POSIX runtime environment for POSIX application deployment on MS-Windows. 

上一篇:Apache Maven
下一篇:SCons
相关推荐