MinGW

Тип |  компилятор и порт ПО[вд]
Разработчики |  Колин Питерс (англ. Colin Peters), Ян-Яап-ван-дер-Хейден (нидерл. Jan-Jaap van der Heijden), Мумит Хан (англ. Mumit Khan), Андерс Норландер (англ. Anders Norlander), Эрни Бойд (валл. Earnie Boyd), Дейл Хендерсон (англ. Dale Handerson) и др.
Написана на |  C, C++
Операционная система  |  Windows
Первый выпуск |  1 июля 1998[1]
Аппаратная платформа  |  x86
Последняя версия |  5.4.2 (11 апреля 2021; 3 года назад (2021-04-11))
| Читаемые форматы файлов:

MinGW Developer Studio Project[вд]
| Создаваемые форматы файлов:

MinGW Developer Studio Project[вд]
Лицензия |  GNU GPL 2[2]
Сайт |  osdn.net/projects/mingw/

MinGW (англ. Minimalist GNU for Windows), ранее mingw32 — набор инструментов разработки программного обеспечения для создания приложений под Windows[3]. Включает в себя компилятор, родной программный порт GNU Compiler Collection (GCC) под Windows вместе с набором свободно распространяемых библиотек импорта и заголовочных файлов для Windows API. В MinGW включены расширения для библиотеки времени выполнения Microsoft Visual C++ для поддержки функциональности C99[3]. Поддерживает стандарт C++11.

## Содержание

* 1 История
* 2 Компоненты MinGW
* 3 Сравнение с Cygwin
* 4 MinGW-w64
* 5 Примечания
* 6 См. также
* 7 Ссылки

## История

[править | править код]

MinGW изначально назывался mingw32; затем цифры были отброшены, чтобы преодолеть заблуждение, что MinGW ограничен 32-битными системами[4]. Первый релиз, созданный Колином Петерсом (англ. Colin Peters) в 1998 году, включал в себя только порт GCC из Cygwin[5][6]. Первый нативный Windows-порт GCC был создан Jan-Jaap van der Heijden, также Heijden добавил binutils и make[5][6]. Mumit Khan позже принял участие в разработке, добавив в комплект ещё больше специфичных для Windows возможностей, включая заголовочные файлы Win32, написанные Anders Norlander[5][6]. В 2000 проект был перемещён на SourceForge.net, чтобы получить большую поддержку общественности и централизовать разработку[5][6].

В сентябре 2005 MinGW был выбран проектом месяца на SourceForge.net[6].

## Компоненты MinGW

[править | править код]

Проект MinGW поддерживает и распространяет несколько различных ключевых компонентов и дополнительных пакетов, включая различные порты GNU toolchain, такие как GCC и binutils, переведённые в эквивалентные пакеты[4][7]. Эти утилиты могут быть использованы из командной строки Windows или интегрированы в IDE.

В дополнение, компонент MinGW, известный как MSYS (Minimal SYStem), предоставляет win32-порты окружения легковесной Unix-подобной оболочки, включающей rxvt и набор инструментов POSIX, достаточный для запуска скриптов autoconf[8].

Реализации заголовочных файлов Win32 и библиотек импорта Win32 для связывания во время выполнения программы от начала до её завершения имеют пермиссивную лицензию[9], а порты GNU доступны под GNU General Public License. Бинарные сборки полного пакета MSYS и отдельных MinGW GNU утилит доступны для скачивания на сайте MinGW.

## Сравнение с Cygwin

[править | править код]

MinGW отделился от Cygwin 1.3.3. Несмотря на то, что и Cygwin, и MinGW используются для портирования программного обеспечения Unix под Windows, они используют разный подход[10]: цель Cygwin — предоставить полный слой POSIX (подобный тому, который находится в Linux и других Unix-системах) над Windows, жертвуя производительностью там, где это необходимо для совместимости. Соответственно, такой подход требует от Win32-программ, написанных с Cygwin, запуска поверх копилефтной библиотеки совместимости, которая должна распространяться с программой, а также с исходным кодом программы. Целью MinGW является предоставление нативной функциональности и производительности посредством прямых вызовов Windows API. В отличие от Cygwin, MinGW не нуждается в DLL-слое совместимости и, таким образом, программы не обязаны распространяться с исходным кодом.

Вследствие того, что MinGW использует вызовы Win32 API, он не может предоставить полного POSIX API; он не может скомпилировать некоторые приложения Unix, которые могут быть скомпилированы с Cygwin. В частности, это относится к приложениям, которые требуют такой функциональности POSIX, как fork(), mmap() или ioctl()[10] и предполагают запуск в среде POSIX. Приложения, написанные с использованием кроссплатформенных библиотек, таких, как SDL, wxWidgets, Qt или GTK+, как правило, легче компилируются в MinGW, чем в Cygwin.

Комбинация MinGW и MSYS предоставляет небольшую независимую среду, которая может быть загружена на съемные носители, не требуя добавления записей в файлы реестра. Cygwin, предоставляя бо́льшую функциональность, является более сложным для установки и поддержки.

Также возможна кросс-компиляция приложений Windows с MinGW-GCC под управлением операционных систем семейства POSIX. Это означает, что разработчику не нужно устанавливать Windows с MSYS, чтобы скомпилировать программы, которые будут запускаться под Windows без Cygwin.

## MinGW-w64

[править | править код]

В связи с тем, что в рамках изначального проекта MinGW не обещалось, что в его кодовую базу будут вноситься обновления, связанные с добавлением некоторых новых ключевых элементов Win32 API, а также наиболее необходимой поддержки 64-битной архитектуры, был создан проект MinGW-w64. Он является новой чистой реализацией портирования GNU Compiler Collection (GCC) под Microsoft Windows, осуществленной изначально компанией OneVision и переданной в 2008 году[11] в общественное пользование (Public Domain). Сначала он был предложен на рассмотрение для интеграции с оригинальным проектом MinGW, но был отклонен в связи с подозрением на использование несвободного или проприетарного кода. По многим серьёзным причинам этического характера, связанным с отношением со стороны авторов MinGW[12], ведущие разработчики кода MinGW-w64 решили больше не пытаться кооперироваться с проектом MinGW.

MinGW-w64 обеспечивает более полную реализацию Win32 API[13], включая:

* лучшую поддержку стандарта C99
* лучшую поддержку pthreads (включая возможность задействовать функциональность стандарта C++11 библиотеки libstdc++ компилятора GCC)
* GCC multilib
* точки входа в программу с поддержкой Unicode (wmain/wWinMain)
* DDK (из проекта ReactOS)
* DirectX (из проекта WINE)
* поддержку больших файлов

## Примечания

[править | править код]

1. ↑ Minimalist GNU Win32
2. ↑ https://www.mingw-w64.org/support/
3. ↑ 1 2 SourceForge.net: MinGW — Minimalist GNU for Windows (неопр.). Дата обращения: 5 июля 2009. Архивировано 1 июля 2009 года.
4. ↑ 1 2 What is MinGW? (неопр.) Дата обращения: 5 июля 2009. Архивировано 21 ноября 2008 года.
5. ↑ 1 2 3 4 MinGW — History (неопр.). Дата обращения: 5 июля 2009. Архивировано 14 августа 2009 года.
6. ↑ 1 2 3 4 5 SourceForge Project of the Month Архивировано 23 августа 2007 года.
7. ↑ MinGW Components (неопр.). Дата обращения: 5 июля 2009. Архивировано 29 июня 2009 года.
8. ↑ MinGW — Minimal SYStem (неопр.). Дата обращения: 5 июля 2009. Архивировано 5 января 2009 года.
9. ↑ Licensing Terms | MinGW (неопр.). Дата обращения: 5 июля 2009. Архивировано 4 августа 2009 года.
10. ↑ 1 2 Cygwin | MinGW (неопр.). Дата обращения: 5 июля 2009. Архивировано 28 августа 2009 года.
11. ↑ История проекта MinGW-w64 (неопр.). MinGW-w64 Wiki. Дата обращения: 30 мая 2013. Архивировано из оригинала 16 августа 2013 года.
12. ↑ Harmonizing mingwrt / w32api with mingw-w64 (неопр.). MinGW Mailing list. Дата обращения: 30 мая 2013. Архивировано из оригинала 16 августа 2013 года.
13. ↑ http://mingw-w64.sourceforge.net/picker.php (неопр.). Дата обращения: 30 мая 2013. Архивировано из оригинала 16 августа 2013 года.

## См. также

[править | править код]

* GCC
* Cygwin
* GnuWin32
* DJGPP

## Ссылки

[править | править код]

* GCC Home Page
* Официальная страница MinGW
* Официальная страница MinGW-w64
* Страница MinGW на SourceForge.net
* Unofficial TDM-MinGW GCC builds
* GCC for both x64 & x86 Windows!. Страница загрузки различных вариантов сборок проекта MinGW-w64. В том числе Mingw-builds — всегда последняя версия mingw-w64 GCC; установки не требует; из особенностей следует отметить основные: а) предоставляются 32 и 64 разрядные сборки, б) сборки являются двухцелевыми, в) полная поддержка C++11 thread support library.
* Неофициальная сборка. Как правило, последняя версия GCC с разными библиотеками и утилитами. Установки не требует.