World Library  
Flag as Inappropriate
Email this Article


Original author(s) Colin Peters
Developer(s) MinGW Project
Initial release July 1, 1998 (1998-07-01)
Stable release 0.6.0 - beta[1] / September 5, 2013 (2013-09-05)
Written in C, C++
Operating system Microsoft Windows
Type Compiler
License Public domain (headers), GNU General Public License (compiler and toolchain)
Website .orgmingw

MinGW (Minimalist GNU for Windows), formerly mingw32, is a free and open source software development environment for creating Microsoft Windows applications.

It includes a port of the GNU Compiler Collection (GCC), GNU Binutils for Windows (assembler, linker, archive manager), a set of freely distributable Windows specific header files and static import libraries which enable the use of the Windows API, a Windows native build of the GNU Project's GNU Debugger, and miscellaneous utilities.

MinGW does not rely on third-party C runtime dynamic-link library (DLL) files, and because the runtime libraries are not distributed using the GNU General Public License (GPL), it is not necessary to distribute the source code with the programs produced, unless a GPL library is used elsewhere in the program.[2]

MinGW can be run either on the native Microsoft Windows platform, cross-hosted on GNU/Linux, or "cross-native" on Cygwin.

An alternative called MinGW-w64 was created by a different author to include several new APIs and provide 64-bit support and is described later in this article.


  • History 1
  • Programming language support 2
  • Components 3
  • Comparison with Cygwin 4
  • MinGW-w64 5
  • See also 6
  • References 7
  • External links 8


MinGW was originally called mingw32 (Minimalist GNU for W32), following the

  • Official website
  • MinGW on
  • MSYS2

External links

  1. ^ "Recent Project News". 
  2. ^ "MinGW". 2008-07-07. Retrieved 2013-10-16. 
  3. ^ "GNU Coding Standards". Free Software Foundation. April 27, 2013. 5.5 Portability between System Types. Retrieved July 1, 2013. 
  4. ^  
  5. ^ a b c d e "History". MinGW. Retrieved 2012-07-09. 
  6. ^ a b c d e "Project of the Month". Retrieved 2012-07-09. 
  7. ^ ["" "stackoverflow"] . Retrieved 2015-04-01. 
  8. ^ gcc (2010-06-21). "C99". MinGW wiki. 
  9. ^ "FAQ". MinGW. Retrieved 2012-07-09. 
  10. ^ "MinGW - Minimalist GNU for Windows - Browse Files at". Retrieved 2012-07-09. 
  11. ^ "MinGW Command Line Interface Installer". Retrieved 14 June 2012. 
  12. ^ "MSYS". MinGW. Retrieved 2012-07-09. 
  13. ^ "MSYS". MinGW. Retrieved 2012-07-09. 
  14. ^ "MSYS". Retrieved 2011-05-20. 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. 
  15. ^ "mingwPORT". MinGW. Retrieved 2012-07-09. 
  16. ^ "Licensing Terms". MinGW. Retrieved 2012-07-09. 
  17. ^ a b "Cygwin". MinGW. Retrieved 2012-07-09. 
  18. ^
  19. ^ "History". MinGW-w64 Wiki. Retrieved 30 May 2013. 
  20. ^ Marshall, Keith (19 July 2009). "Re: Harmonizing mingwrt / w32api with mingw-w64". MinGW-dvlpr (Mailing list). Retrieved 12 June 2014. 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. 
  21. ^ Tietz, Kai (20 July 2014). "Re: Harmonizing mingwrt / w32api with mingw-w64". MinGW-dvlpr (Mailing list). Retrieved 12 June 2014. 
  22. ^ "MinGW-w64". Retrieved 30 May 2013. 


See also

Additionally, the MinGW-w64 project maintains winpthreads, a wrapper library similar to pthreads-win32, with the main difference that it allows GCC to use it as a threads library resulting in functional C++11 thread libraries , , and .

  • better C99 support
  • better POSIX Threads (pthreads) support (including the possibility to enable C++11 thread-related functionality in GCC's libstdc++)
  • GCC multilib, which allows users to install 32-bit and 64-bit libraries in parallel
  • Unicode entry point (wmain/wWinMain)
  • DDK (from ReactOS)
  • DirectX (from Wine)
  • Large file support
  • Win64 support
  • Some useful tools such as gendef (an improved version of MinGW's pexports utility), and widl (an IDL compiler, a free replacement for MIDL).

MinGW-w64 provides a more complete Win32 API implementation,[22] including:

In 2005, MinGW-w64, was created by OneVision Software under clean room design principles, since the original MinGW project was not prompt on updating its code base, including the inclusion of several key new APIs and the much needed 64-bit support. In 2008, OneVision then donated the code to Kai Tietz, one of its lead developers, under the condition that it remain open source.[19] It was first submitted to the original MinGW project, but refused under suspicion of using non-public or proprietary information.[20] For many reasons, the lead developer and co-founder of the MinGW-w64 project, Kai Tietz, decided not to attempt further cooperation with MinGW.[21]

Original author(s) OneVision Software
Developer(s) Kai Tietz
Initial release 2005 (2005)
Stable release 4.0.4[18] / August 4, 2015 (2015-08-04)
Written in C, C++
Operating system Microsoft Windows
Type Compiler
License Public domain (headers), GNU General Public License (compiler and toolchain), Zope Public License
Website .orgmingw-w64


It is also possible to cross-compile Windows applications with MinGW-GCC under POSIX systems. This means that developers do not need a Windows installation with MSYS to compile software that will run on Windows with or without Cygwin.

The combination of MinGW and MSYS provides a small, self-contained environment that can be loaded onto removable media without leaving entries in the registry or files on the computer. Cygwin Portable provides a similar feature that is far more robust.

Windows programs written with Cygwin run on top of a copylefted compatibility DLL that must be distributed with the program, along with the program's source code. MinGW does not require a compatibility layer, since MinGW-based programs are compiled with direct calls to Windows APIs.

MinGW was forked from version 1.3.3 of Cygwin.[5] Although both Cygwin and MinGW can be used to port Unix software to Windows, they have different approaches:[17] Cygwin aims to provide a complete POSIX layer comprising a full implementation of all major Unix system calls and libraries. Compatibility is considered higher priority than performance. On the other hand, MinGW's priorities are simplicity and performance. As such, it does not provide certain POSIX APIs which cannot easily be implemented using the Windows API, such as fork(), mmap() and ioctl().[17] Applications written using a cross-platform library that has itself been ported to MinGW, such as SDL, wxWidgets, Qt, or GTK+, will usually compile as easily in MinGW as they would in Cygwin.

Comparison with Cygwin

The implementation of Windows system headers and static import libraries are released under a permissive license,[16] while the GNU ports are provided under the GNU General Public License. Binary downloads of both the complete MSYS package and individual MinGW GNU utilities are available from the MinGW site.

mingwPORTs are user contributed additions to the MinGW software collection. Rather than providing these "add-ons" as precompiled binary packages, they are supplied in the form of interactive Bourne shell scripts, which guide the end user through the process of automatically downloading and patching original source code, then building and installing it. Users who wish to build any application from a mingwPORT must first install both MinGW and MSYS.[15]

In addition, a component of MinGW known as MSYS (minimal system) provides Windows ports of a lightweight Unix-like shell environment including rxvt and a selection of POSIX tools sufficient to enable autoconf scripts to run,[12][13] but it does not provide a C compiler or a case-sensitive file system.[14]

MinGW supports dynamic libraries named according to the .lib and .dll conventions, as well as static libraries following the lib.a naming convention common on Unix and Unix-like systems.

The MinGW project maintains and distributes a number of different core components and supplementary packages, including various ports of the GNU toolchain, such as GCC and binutils, translated into equivalent packages.[9][10] These utilities can be used from the Windows command line or integrated into an IDE. Packages may be installed using the command line via mingw-get.[11]


MinGW links by default to the Windows OS component library MSVCRT, which is the C library that Visual C version 7.1 linked to (the initial target was CRTDLL), which was released in 1998 and therefore does not include support for C99 features, or even all of C89; while targeting MSVCRT yields programs that require no additional runtime redistributables to be installed, the lack of support for C99 has caused porting problems, particularly where printf-style conversion specifiers are concerned. These issues have been partially mitigated by the implementation of a C99 compatibility library, libmingwex, but the extensive work required is far from complete and may never be fully realized.[8] MinGW-w64 has resolved these issues, and provides fully POSIX compliant printf functionality.

Most languages supported by GCC are supported on the MinGW port as well. These include C, C++, Objective-C, Objective-C++, Fortran and Ada. The GCC runtime libraries are used (libstdc++ for C++, libgfortran for Fortran, etc.).

Programming language support

In the last quarter of 2013 a new project was started,[7] MSYS2 together with 32-bit and 64-bit MinGW packages. This project was created to keep track with newer advances of the Cygwin project and the fact that the original MSYS was not able to keep up with Cygwin. MSYS2 is an independent rewrite of MSYS, based on modern Cygwin (POSIX compatibility layer) and MinGW-w64 with the aim of better interoperability with native Windows software. It uses Arch Linux's Pacman as the package manager.

[6] MinGW was selected as Project of the Month at


This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.

Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.