В чем разница между Cygwin и MinGW?

Вы можете привязать к «& lt; Key & gt;» а затем проверить event.char и выполнить действие, которое вы хотите, на основе значения этого? Разумеется, я понятия не имею, работает ли это при одновременном нажатии нескольких клавиш, оно может все же работать в одной и той же проблеме. Я не использовал Tk в возрасте.

"& lt; Key & gt; Пользователь нажал любую клавишу. Ключ предоставляется в элементе char объекта события, переданного обратному вызову (это пустая строка для специальные клавиши). "

600
задан MD XF 21 February 2017 в 21:57
поделиться

9 ответов

Для упрощения это выглядит так:

  • Скомпилируйте что-то в Cygwin, и вы скомпилируете это для Cygwin .

  • Скомпилируйте что-нибудь в MinGW, и вы скомпилируете это для Windows .

О Cygwin

Цель Cygwin - значительно упростить перенос приложений на основе Unix в Windows, эмулируя многие мелкие детали, которые предоставляют операционные системы на основе Unix. и задокументированы стандартами POSIX . Ваше приложение может использовать функцию Unix, такую ​​как каналы, доступ к файлам и каталогам в стиле Unix и т. Д., И его можно скомпилировать с Cygwin, который будет действовать как слой совместимости вокруг вашего приложения, так что многие из эти специфичные для Unix парадигмы можно продолжать использовать.

Когда вы распространяете свое программное обеспечение, получатель должен будет запустить его вместе со средой выполнения Cygwin (предоставляется файлом cygwin1.dll ). Вы можете распространять это вместе с вашим программным обеспечением, но ваше программное обеспечение должно соответствовать его лицензии с открытым исходным кодом. Может даже случиться, что даже связывание вашего программного обеспечения с ним, но раздельное распространение dll, может потребовать от вас соблюдения лицензии на открытый исходный код.

О MinGW

MinGW стремится быть просто портом Windows для Windows. Инструменты компилятора GNU, такие как GCC, Make, Bash и так далее. Он не пытается эмулировать или обеспечивать всестороннюю совместимость с Unix, но вместо этого он обеспечивает минимально необходимую среду для использования GCC (компилятор GNU) и небольшого числа других инструментов в Windows . Он не имеет слоя эмуляции Unix, как Cygwin, но в результате ваше приложение должно быть специально запрограммировано для запуска в Windows, что может означать значительные изменения, если оно было создано для работы в стандартной среде Unix и использует специфичные для Unix функции, такие как упомянутые ранее. По умолчанию код, скомпилированный в MinGW GCC, будет компилироваться в собственную цель Windows X86, включая файлы .exe и .dll, хотя вы также можете выполнять кросс-компиляцию с правильными настройками, поскольку вы в основном используете пакет инструментов компилятора GNU.

MinGW по сути является альтернативой компилятору Microsoft Visual C ++ и связанным с ним инструментам компоновки / создания. В некоторых случаях может быть возможно использовать MinGW для компиляции чего-либо, предназначенного для компиляции с Microsoft Visual C ++, с нужными библиотеками, а в некоторых случаях с другими модификациями.

MinGW включает в себя некоторые базовые стандартные библиотеки для взаимодействия с операционной системой Windows, но, как и в случае стандартных стандартных библиотек, включенных в коллекцию компиляторов GNU, они не накладывают лицензионных ограничений на созданное вами программное обеспечение.

Для нетривиальных программные приложения, сделать их кросс-платформенными могут быть серьезной проблемой, если вы не используете всеобъемлющую кроссплатформенную среду. В то время, когда я писал это, среда Qt была одной из самых популярных для этой цели, позволяя создавать графические приложения, работающие в операционных системах, включая Windows, но есть и другие варианты. Если вы используете такую ​​платформу с самого начала, вы можете не только уменьшить свои головные боли, когда приходит время портировать на другую платформу, но вы можете использовать те же графические виджеты - окна,

594
ответ дан 22 November 2019 в 21:55
поделиться

Cygwin - это Unix-подобная среда и интерфейс командной строки для Microsoft Windows.

Mingw - это собственный программный порт из коллекции компиляторов GNU (GCC) для Microsoft Windows вместе с набором свободно распространяемых библиотек импорта и заголовочных файлов для Windows API. MinGW позволяет разработчикам создавать собственные приложения Microsoft Windows.

Вы можете запускать двоичные файлы, созданные с помощью mingw без среды cygwin , при условии наличия всех необходимых библиотек (DLL).

3
ответ дан 22 November 2019 в 21:55
поделиться

Обратите внимание, что поведение утилиты может действительно отличаться между двумя.

Например, Cygwin tar может разветвляться - потому что fork () поддерживается в DLL - там, где версия mingw не может.

8
ответ дан 22 November 2019 в 21:55
поделиться

Не забывайте Программное обеспечение AT & T U / Win , предназначенное для компиляции приложений Unix для Windows (последняя версия - 2012-08-06; использует Eclipse Public License, версия 1.0).

Как и Cygwin, они должны работать против библиотеки; в их случае POSIX.DLL . Ребята из AT & T - потрясающие инженеры (та же группа, которая принесла вам ksh и dot ), и их вещи стоит проверить.

14
ответ дан 22 November 2019 в 21:55
поделиться

Cygwin эмулирует всю среду POSIX, в то время как MinGW - минимальный набор инструментов только для компиляции (компилирует собственное приложение Win.) Так что если вы хотите сделать свой проект кроссплатформенным, выбор между ними очевиден, MinGW.

Хотя вы можете рассмотреть возможность использования VS в Windows, GCC в Linux / Unices. Большинство проектов с открытым исходным кодом делают это (например, Firefox или Python).

11
ответ дан 22 November 2019 в 21:55
поделиться

Cygwin использует DLL, cygwin.dll (или, возможно, набор DLL) для обеспечения POSIX-подобной среды выполнения в Windows.

MinGW компилируется в собственное приложение Win32.

Если вы собираете что-то с помощью Cygwin, любая система, на которую вы его устанавливаете, также будет нуждаться в DLL (ах) Cygwin. Приложение MinGW не требует специальной среды выполнения.

45
ответ дан 22 November 2019 в 21:55
поделиться

Википедия сравнивает здесь .

С сайта Cygwin :

  • Cygwin является Linux-подобной средой для Windows. Он состоит из двух частей: DLL (cygwin1.dll), которая действует как уровень эмуляции API Linux, обеспечивая существенную функциональность API Linux.
  • Набор инструментов, обеспечивающих внешний вид и поведение Linux.

С веб-сайта Mingw :

MinGW («Минималистичный GNU для Windows») - это коллекция свободно доступных и свободно распространяемых специфических для Windows файлов заголовков и библиотек импорта в сочетании с наборами инструментов GNU, позволяющими создавать родные программы Windows, которые не используют сторонние библиотеки C времени выполнения

60
ответ дан 22 November 2019 в 21:55
поделиться

Чтобы добавить к другим ответам, Cygwin поставляется с библиотеками и заголовками MinGW, и вы можете компилировать без ссылки на cygwin1.dll, используя флаг -mno-cygwin с gcc. Я предпочитаю использовать простые MinGW и MSYS.

137
ответ дан 22 November 2019 в 21:55
поделиться

Cygwin является попыткой создания полная среда UNIX / POSIX в Windows. Для этого используются различные библиотеки DLL. Хотя эти библиотеки DLL охватываются GPLv3 +, их лицензия содержит исключение , которое не заставляет GPLv3 + охватывать производную работу. MinGW - это пакет компилятора C / C ++, который позволяет создавать исполняемые файлы Windows независимо от таких библиотек DLL - вам нужны только обычные среды выполнения MSVC, которые являются частью любой обычной установки Microsoft Windows.

Вы также можете получить небольшую UNIX / POSIX-подобная среда, скомпилированная с MinGW под названием MSYS . Он не имеет почти всех функций Cygwin, но идеально подходит для программистов, желающих использовать MinGW.

MinGW - это набор компиляторов C / C ++, который позволяет создавать исполняемые файлы Windows независимо от таких библиотек DLL - вам нужны только обычные среды выполнения MSVC, которые являются частью любой обычной установки Microsoft Windows.

Вы также можете получить небольшую UNIX / POSIX-подобная среда, скомпилированная с MinGW под названием MSYS . Он не имеет почти всех функций Cygwin, но идеально подходит для программистов, желающих использовать MinGW.

MinGW - это набор компиляторов C / C ++, который позволяет создавать исполняемые файлы Windows независимо от таких библиотек DLL - вам нужны только обычные среды выполнения MSVC, которые являются частью любой обычной установки Microsoft Windows.

Вы также можете получить небольшую UNIX / POSIX-подобная среда, скомпилированная с MinGW под названием MSYS . Он не имеет почти всех функций Cygwin, но идеально подходит для программистов, желающих использовать MinGW.

308
ответ дан 22 November 2019 в 21:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: