MinGW или Cygwin?

357
26 ноября 2016, 18:59

Раньше просто компилировал с помощью g++ на Ubuntu, вытягивая компилятор с помощью пакетного менеджера:

$ sudo apt-get install g++
$ g++ -o main.a main.cpp

Или на Windows с помощью различных IDE, внутри которых, как мне говорили, стоит MinGW.

Сейчас хочется просто, используя внутреннюю консоль в Окнах, компилировать нативно под них самих же. Почитал про Cygwin и про MinGW, понял, тащемта, что к чему, но остались пробелы - не совсем ясно что мне нужно.

Можно ли подробно, а лучше очень просто, узнать о каждой возможности скомпилировать под Окна?

Answer 1

Cygwin - это попытка перенести UNIX окружение в Windows, а MinGW (или современный вариант MinGW-w64) сосредоточен только на компиляторе GCC.

Далее, при компиляции программы с помощью Cygwin, по условиям его лицензии вы будете линковаться с его динамической библиотекой cygwin1.dll и таскать её всюду за собой, в то время, как с MinGW, вы будете зависеть только от стандартных MSVC библиотек (по-умолчанию от msvcrt.dll).

Поскольку MinGW это только компилятор, то есть отдельный проект - MSYS2 который поставляет облегчённую/минимальную версию UNIX окружения в достаточном объёме, чтобы вести разработку почти как в UNIX (там есть bash, git, curl и т.д.). Причём, утилиты для MSYS2 собираются при помощи MinGW.

Про отличия MinGW от Cygwin можно ещё почитать:

  • в wiki: https://ru.wikipedia.org/wiki/MinGW
  • в английской версии SO: What is the difference between Cygwin and MinGW?
  • ну, и загуглить: Cygwin vs. MinGW
READ ALSO
стандарты GNU C++ и GNU C++11

стандарты GNU C++ и GNU C++11

Почему gcc компилирует этот код для стандарта GNU C++, но не компилирует для GNU C++11?

261
return … или return (…)

return … или return (…)

Часто вижу, что выражение, которое возвращает return, заключено в круглые скобкиНапример, в хедере set в Visual Studio 2015 во всех функциях, возвращающих...

231
Эхо сервер на двух разных машинах, подключенных к одному wifi с\с++

Эхо сервер на двух разных машинах, подключенных к одному wifi с\с++

Есть две машины на Linux, подключённые к одному Wi-Fi роутеруНужно реализовать на них эхо-сервер на C\C++

228
варианты инициализации объектов

варианты инициализации объектов

Начал изучать c++Может кто подробно объяснить чем отличаются эти варианты инициализации? Когда что вызывается и т

265