MinGW ("Minimalistic GNU for Windows") is a collection of freely available and freely distributable Windows specific header files and import libraries combined with GNU toolsets that allow one to produce native Windows programs that do not rely on any 3rd-party C runtime DLLs.
MinGW refers to a set of runtime headers, used in building a compiler system based on the GNU GCC and binutils projects. It compiles and links code to be run on Win32 platforms... providing C, C++ and Fortran compilers plus other related tools. If you see references to "mingw32" instead of "MinGW", they are referring to the same compiler system. The project's name changed from mingw32 to MinGW is to prevent the implication that MinGW will only works on 32 bit systems (as 64 and higher bit machines become more common, MinGW will evolve to work with them). MinGW uses the Microsoft runtime libraries, distributed with the Windows operating system. Unlike other ports of GCC to Windows, the runtime libraries are not distributed using GNU's General Public License (GPL). You, therefore, do not have to distribute your source code with your programs unless, of course, you use a GPL library in your programs. Initially, MinGW was an assortment of individual packages... the MinGW runtime, various applications built using that runtime (gcc, ld, etc.), and other useful components (the w32api headers needed to code for the Win32 API). Developers "rolled their own" MinGW environments by downloading the latest versions of each individual package needed. This was necessary given the dynamic nature of early package versions (updates being posted constantly)... but was oftentimes confusing for newbies, and made it difficult for application/library vendors to design products that build with a "standard" MinGW environment. Therefore, around mid-2001 when development had matured and updates were not being packaged as rapidly, the decision was made to create a single-file distribution of the standard MinGW environment. This single archive contains the files from each component package, bundled and ready to extract. The individual component packages are still available for download... if a particular package is updated in between releases of the overall distribution, it's possible to simply drop the newer package in place over a distribution install.
Packages included in MinGW
- binutils - Assembler, linker, ...
- mingw-runtime - Headers and libraries for the C library
- w32api - Windows API header files and libraries
- gcc-core - C compiler
- gcc-g++ - C++ compiler
- gcc-objc - Objective C compiler
- gcc-gfortran - Fortran 90 compiler
- gcc-java - Java compiler
- gcc-ada - Ada compiler
- mingw-gdb - Windows native build of GNU debugger
- mingw32-make - Windows native build of GNU make
- mingw-utils - Miscellaneous utilities
Contents of MinGW Packages
- binutils: A native port of the GNU binutils. Amongst other tools, this package contains the assembler and linker, which will transform the output of the compiler into a binary executable. You must install this package, together with gcc-core, to obtain a correctly functioning compiler suite.
- mingw-runtime: Header files and import libraries for the default C runtime library, (also known as msvcrt), which is required by MinGW compiled programs running on the Microsoft Windows operating system. You must install this package, together with gcc-core, to obtain a correctly functioning compiler suite.
- w32api: Header files and import libraries for the Microsoft Windows operating system; this provides the Application Programming Interface (API) required to access the essential operating system service functions, which are required by any working native Windows application. You must install this package, together with gcc-core, to obtain a correctly functioning compiler suite.
- gcc: A native port of the GNU gcc compiler. This is the application which parses source files, translating them to linkable object code. Note that the gcc package set is subdivided into a gcc-core package, which provides only a C compiler, with additional supplementary packages for additional programming languages. You must get at least the gcc-core package; if you also wish to add any supplementary languages, please ensure that you get the appropriate packages, with the same version number as the gcc-core package.
- mingw-gdb: A native port of GNU debugger.
- mingw32-make: A native port of GNU make. This application parses makefiles to create a project by following the rules expressed in the makefile.
- mingw-utils: Miscellaneous utilities.
MinGW contains several different packages. Some of those packages are licensed by the GNU Public License (GPL), some are licensed in the Public Domain and some have their own versions of a license. See [[mingw:license|Licensing Terms]]
It can be download from [http://sourceforge.net/projects/mingw/ Sourceforge's MinGW project page] after you click the "Files" link. The package's name is MINGW-NNN.exe, (where "NNN" represents the current version number, e.g. version "5.1.6" is distributed as "MinGW-5.1.6.exe").