MinGW or Cygwin?
MinGW (Minimalist GNU for Windows), formerly mingw32, is a native software port of the GNU Compiler Collection (GCC) to Microsoft Windows along with a set of freely distributable import libraries and header files for the Windows API. MinGW allows developers to create native Microsoft Windows applications. Included in MinGW are extensions to the Microsoft Visual C++ runtime library to support C99 functionality.
CygwinThis thread - MinGW vs Cygwin. someone summarize as
Cygwin (pronounced /ˈsɪɡwɪn/) is a collection of tools originally developed by Cygnus Solutions to allow versions of Microsoft Windows to behave in ways familiar to Unix users. Programs supported by Cygwin work well on Windows NT, Windows 2000, Windows XP, and Windows Vista, and some run acceptably on Windows 9x. While Cygwin provides header files and libraries that make it possible to recompile or to port Unix applications for use on computers running Microsoft Windows operating systems, it does not make binaries compatible with such computers running without Cygwin.
- MinGW directly calls win32 API, and only offer it, so many "linux" programs may not compile
(It is library to port application to win32)
- cygwin for Window uses a compatibility layer that was reimplemented in a way or another. Probably to translate some calls to the Win32 API. You have to include shared libs to make it work. But it has a MinGW compatibility mode (-mno-cygwin), and basically, it won't make much difference with MinGW.)
(It is posix emulator)
So we no need to recompile application when we run it on cygwin.