Cygwin WSL Colinux MinGw Msys

Working with opensource codes sometimes end up with OS compatibility issues, toolchain need support of Linux environment. So there are number of solution to this problem. Researchers / Developers need to choose the perfect package for their purpose.

12 years ago when i was working for High Energy Physics Simulations with software’s like Geant4 Root etc, that run on linux only (root later supported windows via minGw) i have to find a terminal with linux installed on it, or a else dual boot but that was too weird for my 40Gb HDD. Next year i moved to NIT for masters where i was asked to support a PhD student. But then we are somehow forced to use windows and luckily there was an option from the CERN research group. we choosed Cygwin and everything was fine even we got GUI with Xming.

So here is our list of confusions

  1. Cygwin
  2. MinGW
  3. WSL
  4. Msys

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, but it does not provide a C compiler or a case-sensitive file system.

Whenever we are talking about POSIX compliance, there are two things

  1. Development support i.e. support codes written for POSIX systems
  2. Runtime, support posix binaries

Cygwin is 100% posix compliant where as MinGW is partially compliant.

What is the difference between Cygwin and MinGW?
Originally Answered: What is the difference between MinGW and Cygwin?
Short answer:

MinGW: allows you to use GNU development tools (GCC, etc.) to build applications that use the native Windows API

Cygwin: builds applications that use the POSIX API and allows them to run on Windows

Longer answer:

MinGW is designed to let you use GNU development tools, such as GCC, to build native Windows applications. It has a minimal set of POSIX tools, just enough to support running the GNU development toolchain. But it is designed to compile applications that use Windows APIs, not POSIX APIs. Since programs compiled using MinGW tools only use Windows APIs, they can run on standard Windows, with no special DLLs or other run-time tools.

Cygwin is designed to let you take source code written to use POSIX APIs, and build them to run on Windows. The Cygwin project distributes multiple POSIX applications that have been recompiled to run on Windows. Since these applications are built to use the POSIX API, they require the user to install the Cygwin DLL. The Cygwin DLL handles translating the application’s POSIX API calls into native Windows API calls. You can also use the Cygwin versions of the GNU development tools to compile other POSIX applications’ source code.

Here’s a summary:

GNU development tools (GCC, etc.): MinGW yes, Cygwin yes

Full set of POSIX tools (similar to a Linux distribution): MinGW no, Cygwin yes

Allows you to compile native Windows API applications: MinGW yes, Cygwin yes

Allows you to compile POSIX API applications: MinGW no, Cygwin yes

Leave a Comment