Original author(s) Colin Peters
Developer(s) MinGW Project
Initial release 1 July 1998
Stable release 4.5.2 / January 12, 2011; 10 months ago (2011-01-12)[1]
Preview release none / n/a
Written in Ada, C, C++, Fortran, Java, Pascal
Operating system Microsoft Windows
Type Compiler
License Public domain (headers)
GNU General Public License (compiler and toolchain)
Website mingw.org

MinGW (Minimalist GNU for Windows), formerly mingw32, is a native software port of the GNU Compiler Collection (GCC) and GNU Binutils for use in the development of native Microsoft Windows applications; MinGW can function either as a cross compiler targeting Windows or as a native toolchain run on Windows itself.[2] It is deployed along with a set of freely distributable import libraries and header files for the Windows API.[3]



MinGW was originally called mingw32; the numbers were dropped in order to avoid the implication that it would be limited to 32-bit systems.[4] Colin Peters authored the initial release in 1998, consisting only of a Cygwin port of GCC.[5][6] Jan-Jaap van der Heijden created a Windows-native port of GCC and added binutils and make.[5][6] Mumit Khan later took over development, adding more Windows-specific features to the package, including the Win32 headers by Anders Norlander.[5][6] In 2000, the project was moved to SourceForge.net in order to solicit more assistance from the community and centralize its development.[5][6]

MinGW was selected as Project of the Month at SourceForge.net for September 2005.[6]

Programming language support

For languages other than C, MinGW uses the GNU runtime libraries (for example, GNU libstdc++ for C++).[citation needed]

However, because GCC does not supply its own C runtime library, MinGW's C compiler targets Microsoft's old Visual C runtime library, MSVCRT, which was released in 1998 and therefore does not include support for C99 features (let alone all of C89); while targeting MSVCRT yields programs that are as native as possible, 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.[7]

Components of MinGW

The MinGW project maintains and distributes a number of different core components and supplementary packages, including various ports of GNU toolchain, such as GCC and binutils, translated into equivalent packages.[4][8] These utilities can be used from the Windows command line or integrated into an IDE. MinGW supports libraries named according to the "<name>.lib" and"<name>.dll" conventions, in addition to the normal "lib<name>.a" convention common on Unix-like systems.

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

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.[12][13]

The implementation of Win32 header files and Win32 import libraries for run-time linking are released under a permissive license,[14] 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.

mingw-get is a tool which allows users to manage the installation of MinGW and MSYS software. This provides a more convenient way to update and install the libraries, compilers, and utilities in command-line.

Comparison with Cygwin

MinGW 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:[15] Cygwin aims to provide a complete POSIX layer that provides emulations of several system calls and libraries that exist on Linux, Unix, and the BSD variants. The POSIX layer runs on top of Windows, sacrificing performance where necessary for compatibility. Accordingly, this approach requires Win32 programs written with Cygwin to run on top of a copylefted compatibility library that must be distributed with the program, along with the program's source code. MinGW aims to provide native functionality and performance via direct Windows API calls. Unlike Cygwin, MinGW does not require a compatibility layer DLL and thus programs do not need to be distributed with source code.

Because MinGW is dependent upon Win32 API calls, it cannot provide a full POSIX API; it is unable to compile some Unix applications that can be compiled with Cygwin. Specifically, this applies to applications that require POSIX functionality like fork(), mmap() or ioctl()[15] and those that expect to be run in a POSIX environment. 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.

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. By providing more functionality, Cygwin becomes more complicated to install and maintain.

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 without Cygwin.

See also


  1. ^ Release information corresponds to the GCC package only.
  2. ^ http://fedoraproject.org/wiki/SIGs/MinGW – MinGW for Fedora Linux
  3. ^ SourceForge.net: MinGW - Minimalist GNU for Windows
  4. ^ a b What is MinGW?
  5. ^ a b c d e MinGW - History
  6. ^ a b c d e SourceForge Project of the Month
  7. ^ gcc (2010-06-21). "C99". http://mingw.org/wiki/C99. 
  8. ^ MinGW Components
  9. ^ What is MSYS?
  10. ^ MinGW - Minimal SYStem
  11. ^ "MSYS". http://www.mingw.org/: MinGW - Minimalist GNU for Windows. http://www.mingw.org/wiki/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." 
  12. ^ [1]
  13. ^ [2]
  14. ^ http://www.mingw.org/license
  15. ^ a b http://www.mingw.org/node/21

External links

Wikimedia Foundation. 2010.

Look at other dictionaries:

  • MinGW — Desarrollador Proyecto MinGW www.mingw.org Información general Diseñador Colin Peters La …   Wikipedia Español

  • MinGW — Minimalist GNU for Windows Тип компилятор Разработчик Colin Peters, Jan Jaap van der Heijden, Mumit Khan, Anders Norlander …   Википедия

  • MinGW — oder Mingw32 (Minimalist GNU for Windows) ist eine Softwareportierung der GNU Entwicklerwerkzeuge (GCC, GDB) auf die Windows Plattform, mit der man Programme für Windows entwickeln kann. MinGW entstand aus dem Cygwin Projekt heraus.[1] Es wird,… …   Deutsch Wikipedia

  • Mingw — oder Mingw32 (Minimalist GNU for Windows) ist eine Softwareportierung der GNU Entwicklerwerkzeuge (GCC, GDB) auf die Windows Plattform, mit der man Programme für Windows entwickeln kann. MinGW entstand aus dem Cygwin Projekt heraus. [1] Es wird,… …   Deutsch Wikipedia

  • Mingw — Développeur MinGW project Dernière version …   Wikipédia en Français

  • MinGW — Développeur MinGW project Dernière version …   Wikipédia en Français

  • MinGW — noun formerly called mingw32 …   Wiktionary

  • MINGW — Minimalist GNU for Windows (Computing » Software) …   Abbreviations dictionary

  • Mingw32 — MinGW oder Mingw32 (Minimalist GNU for Windows) ist eine Softwareportierung der GNU Entwicklerwerkzeuge (GCC, GDB) auf die Windows Plattform, mit der man Programme für Windows entwickeln kann. MinGW entstand aus dem Cygwin Projekt heraus. [1] Es… …   Deutsch Wikipedia

  • MSYS — MinGW MinGW Développeur MinGW project Dernière version …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.