Ответ 1
Это объяснение обязательно будет записано в другом месте, но здесь все равно...
Cygwin - совместимая среда, совместимая с POSIX, построенная поверх API Win32. Он предоставляет в значительной степени совместимую библиотеку POSIX C, и вокруг нее есть своего рода "Cygwin Distro" с менеджером пакетов, который позволяет вам установить тонну программ Unix, портированных под Cygwin. К ним относятся оболочка Unix, GCC (для Cygwin), X, куча кросс-компиляторов и т.д.
MinGW (-w64) - это проекты, предоставляющие Free (как в общедоступном домене) заголовки и библиотеки Win32. Вы можете видеть это как бесплатную замену заголовков и библиотек в SDK Windows (старых). Они могут использоваться совместно с GCC. Оба проекта и другие третьи стороны предоставляют встроенные сборки GCC для Windows, которые вообще не нуждаются в Cygwin. Эти пакеты можно рассматривать как "полные" (в объеме полноты замены MinGW (-w64)) для Windows SDK.
Обратите внимание, что Cygwin также предоставляет кросс-компиляторы Cygwin для Win32: они запускаются на платформе Cygwin, но производят собственные исполняемые файлы Win32.
Другой игрок, MSYS, представляет собой легкую вилку Cygwin, которая предоставляет только минимальное количество инструментов для запуска скриптов сборки autotools в Windows. MSYS должен использоваться в сочетании с встроенными инструментами MinGW (-w64), это не Cygwin, и вы не можете легко расширить MSYS.
Так что "MinGW (-w64)" часто относится ко всей свободной Windows GNU Toolchain (родной или кросс-компилятор, работающий поверх Cygwin), хотя, строго говоря, это только заголовки и библиотеки.
Чтобы использовать компилятор GCC С++, я предлагаю вам использовать либо мои пакеты (для создания 32-бит и 64-разрядные исполняемые файлы) или mingw-builds. Кроме того, вы можете установить Cygwin и использовать файл setup.exe для установки кросс-компилятора MinGW-w64 и использовать его оттуда, но если вам не нужна почти идеальная эмуляция Unix для скриптов сборки, я бы предложил против нее.
РЕДАКТИРОВАТЬ. Вы можете или не знать, что существует другая альтернатива - старый Interix, который обойден подсистему Win32 и строит непосредственно поверх ядра NT. Это предоставляется как Windows Services for Unix
или Subsystem for Unix Applications
(доступно для Windows 7 и Windows 8 и более старые версии Windows). Это решение доступно для клиентов Windows Pro/Ultimate и предоставляет вам самую близкую к родной поддержке Unix, которую вы собираетесь получить. Heck, вы даже можете использовать Visual Studio для отладки вашего программного обеспечения Unix:)