On a computer with Windows installed, the library that contains most ready-made executable code is not compatible with gcc compiler. To compile C program you need a C implementation for your specific computer.Ĭ implementations consist, basically, of a compiler (its preprocesser and headers) and a library (the ready-made executable code). So, in a very very simplified sentence: MinGW(-w64) is a "no-frills compiler thingie" that lets you write native binary executables for Windows, not only in C and C++, but also other languages. There are a few other minor things, but all in all, most things kind of work anyway. The one major POSIX thing that does not work with MinGW is fork, simply because there is no such thing under Windows (Cygwin goes through a lot of pain to implement it). You can also use the bigger part of what's in POSIX, as long as it is implemented in some form under Windows. You may occasionally find some exotic constant undefined, but for what 99% of the people use 99% of the time, it just works perfectly well. The newer MinGW-w64 comes with a roughly 99% complete Windows API binding (excluding ATL and such) including 圆4 support and experimental ARM implementations. It therefore also does not have any GPL-license implications for the programs you write (notable exception: profiling libraries, but you will not normally distribute those so that does not matter). This means, unlike Cygwin, MinGW does not attempt to offer a complete POSIX layer on top of Windows, but on the other hand it does not require you to link with a special compatibility library. Rather it tries to be minimal (hence the name). MinGW is a complete GCC toolchain (including half a dozen frontends, such as C, C++, Ada, Go, and whatnot) for the Windows platform which compiles for and links to the Windows OS component C Runtime Library in msvcrt.dll.