MinGW - MinGW

MinGW
Оригинальный автор (ы)Колин Питерс
Разработчики)Проект MinGW
изначальный выпуск1 июля 1998 г.; 22 года назад (1998-07-01)
Стабильный выпуск
GNU BinUtils - 2.32-1, Менеджер установки - 0.6.3, WSL - 5.2.1[1] / 11 февраля 2019 г.; 21 месяц назад (2019-02-11)
Написано вC, C ++
Операционная системаМайкрософт Виндоус, Unix-подобный (как кросс-компилятор )
ТипКомпилятор
ЛицензияВсеобщее достояние (заголовки), Стандартная общественная лицензия GNU (компилятор и набор инструментов)
Интернет сайтMingw.org

MinGW («Минималистский GNU для Windows»), ранее mingw32, это бесплатный и открытый исходный код разработка программного обеспечения среда для создания Майкрософт Виндоус Приложения. Разработка проекта MinGW была раздвоенный с созданием в 2005–2008 гг. альтернативного проекта под названием Mingw-w64.

MinGW включает порт из Коллекция компиляторов GNU (GCC), GNU Binutils для Windows (ассемблер, компоновщик, менеджер архива ), набор свободно распространяемых Windows-специфичных файлы заголовков и статические библиотеки импорта которые позволяют использовать Windows API, собственная сборка Windows Проект GNU с Отладчик GNU, и разные утилиты.

MinGW не полагается на сторонний C время выполнения библиотека с динамической компоновкой (DLL), и поскольку библиотеки времени выполнения не распространяются с использованием Стандартная общественная лицензия GNU (GPL), распространять исходный код с созданными программами, если где-либо в программе не используется библиотека GPL.[2]

MinGW может быть запущен либо на родной платформе Microsoft Windows, либо на кросс-хостинге Linux (или другой Unix), или "кросс-родной" на Cygwin. Хотя программы, созданные под MinGW, являются 32-битными исполняемыми файлами, их можно использовать как в 32-битных, так и в 64-битных версиях Windows.

История

Изначально MinGW назывался mingw32 («Минималистичный GNU для W32») в соответствии с соглашением GNU, согласно которому Windows сокращается как «W32».[3][4] Цифры были опущены, чтобы избежать намека на то, что он будет ограничен производством 32-битные двоичные файлы. Колин Петерс является автором первого выпуска в 1998 году, состоящего только из Cygwin-порта GCC.[5][6] Ян-Яап ван дер Хейден создал порт GCC для Windows и добавил binutils и сделать.[5][6] Позже Мумит Хан взяла на себя разработку, добавив в пакет больше функций, специфичных для Windows, в том числе системные заголовки Windows от Андерса Норландера.[5][6] В 2000 году проект был перенесен в SourceForge чтобы получить дополнительную помощь от сообщества и централизовать его развитие.[5][6]

MinGW был выбран проектом месяца на SourceForge за сентябрь 2005 года.[6]

В 2007 году форк оригинального MinGW под названием Mingw-w64 появился для того, чтобы обеспечить поддержку 64-битных и новых API. С тех пор он получил широкое распространение и распространение.

MSYS (сокращение от "Minimal System") был представлен как Оболочка Борна система интерпретатора командной строки[7] с целью лучшей совместимости с собственным программным обеспечением Windows.

MSYS2 («минимальная система 2») - это дистрибутив программного обеспечения и платформа для разработки Майкрософт Виндоус, основанный на Mingw-w64 и Cygwin, который помогает развернуть код из Unix мир в Windows.[8]

В 2018 году, после разногласий с SourceForge по поводу администрирования его списков рассылки, MinGW перешел на OSDN.[9]

Поддержка языков программирования

Большинство языков, поддерживаемых GCC, также поддерживаются портом MinGW. К ним относятся C, C ++, Цель-C, Objective-C ++, Фортран, и Ада. Используются библиотеки времени выполнения GCC (libstdc ++ для C ++, libgfortran для Fortran и т. Д.).[нужна цитата ]

MinGW по умолчанию ссылается на библиотеку компонентов ОС Windows MSVCRT, которая является библиотекой C, Visual C версия 6.0, связанная с (первоначальной целью была CRTDLL), которая была выпущена в 1998 году и поэтому не включает поддержку C99 функции или даже все C89. Хотя ориентация на MSVCRT приводит к появлению программ, для которых не требуется установка дополнительных распространяемых компонентов среды выполнения, отсутствие поддержки C99 вызвало проблемы с переносом, особенно если printf Рассматриваются спецификаторы преобразования стиля. Эти проблемы были частично устранены за счет реализации библиотеки совместимости C99, libmingwex, но необходимая обширная работа далека от завершения и, возможно, никогда не будет реализована полностью.[10] Mingw-w64 решает эти проблемы и обеспечивает полностью совместимую с POSIX функциональность printf.

Совместимость ссылок

Двоичные файлы (исполняемые файлы или библиотеки DLL), созданные с помощью различных компиляторов C ++ (например, MinGW и Visual Studio), как правило, не совместимы по ссылкам. Однако скомпилированный код C совместим по ссылкам.[11]

Компоненты

Проект MinGW поддерживает и распространяет ряд различных основных компонентов и дополнительных пакетов, включая различные порты Набор инструментов GNU, такие как GCC и binutils, переведены в эквивалентные пакеты.[12][13] Эти утилиты можно использовать из Командная строка Windows или интегрированы в IDE. Пакеты могут быть установлены с помощью командной строки через mingw-get.[14]

MinGW поддерживает динамические библиотеки, названные в соответствии с <имя> .lib и <имя> .dll соглашения, а также статические библиотеки, следующие за lib <имя> .a соглашение об именах, распространенное в Unix и Unix-подобных системах.

Кроме того, компонент MinGW, известный как MSYS (минимальная система) предоставляет порты Windows для облегченного Unix-подобного оболочка окружающая среда, включая rxvt и выбор POSIX инструменты, достаточные для включения autoconf скрипты для запуска,[15] но он не предоставляет компилятор C или файловая система с учетом регистра.[16]

mingwPORTs являются дополнениями к коллекции программного обеспечения MinGW, внесенными пользователями. Вместо того, чтобы предоставлять эти «надстройки» в виде предварительно скомпилированных двоичных пакетов, они предоставляются в форме интерактивных Оболочка Борна сценарии, которые проводят конечного пользователя через процесс автоматической загрузки и исправления исходного исходного кода, а затем его сборки и установки. Пользователи, которые хотят создать любое приложение из mingwPORT, должны сначала установить MinGW и MSYS.[17]

Реализация системных заголовков Windows и статических библиотек импорта выпущена под разрешительная лицензия,[18] в то время как порты GNU предоставляются в рамках Стандартная общественная лицензия GNU. Бинарные загрузки как полного пакета MSYS, так и отдельных утилит MinGW GNU доступны с сайта MinGW.

Сравнение с Cygwin

Хотя и Cygwin, и MinGW могут использоваться для переноса программного обеспечения Unix в Windows, у них есть разные подходы:[19] Cygwin стремится предоставить полную POSIX слой, включающий полную реализацию всех основных системных вызовов и библиотек Unix. Совместимость считается более приоритетной, чем производительность. С другой стороны, приоритеты MinGW - простота и производительность. Таким образом, он не обеспечивает определенных POSIX API, которые нелегко реализовать с помощью Windows API, например вилка (), mmap () и ioctl ().[19] Приложения, написанные с использованием кросс-платформенный библиотека, которая сама была перенесена на MinGW, например SDL, wxWidgets, Qt, или GTK, обычно компилируются в MinGW так же легко, как и в Cygwin.

Программы Windows, написанные с помощью Cygwin, запускаются поверх авторское лево совместимость DLL которые должны распространяться с программой вместе с исходным кодом программы. MinGW не требует уровень совместимости, поскольку программы на основе MinGW компилируются с прямыми вызовами Windows API.

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

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

использованная литература

  1. ^ «Загрузить список пакетов». osdn.net.
  2. ^ "(MinGW на) MinGW". MinGW.org/wiki. 2008-07-07. Получено 2013-10-16.
  3. ^ «Стандарты кодирования GNU». gnu.org. Фонд свободного программного обеспечения. 27 апреля 2013 г. 5.5 Переносимость между типами систем. Получено 1 июля, 2013.
  4. ^ Столмен, Ричард (2000-09-18). "Libtool Re: Назвать проект gnu-win32?". libtool (Список рассылки). Получено 2013-05-21.
  5. ^ а б c d "История (MinGW)". MinGW.org. Получено 2012-07-09.
  6. ^ а б c d е "Проект месяца (sourceforge)". SourceForge.net. 2005-08-31. Получено 2012-07-09.
  7. ^ "(wiki :) MSYS". MinGW.org. Получено 2020-04-16. MSYS, сокращение от «Minimal SYStem», представляет собой систему интерпретатора командной строки Bourne Shell.
  8. ^ MSYS2: официальная домашняя страница, репозиторий кода
  9. ^ «Объявление о переходе на OSDN.net». sourceforge.net.
  10. ^ "(MinGW И) C99". MinGW.org/wiki. 2010-06-21.
  11. ^ http://mingw.org/wiki/Interoperability_of_Libraries_Created_by_Different_Compiler_Brands
  12. ^ "(MinGW) FAQ". MinGW.org. Получено 2012-07-09.
  13. ^ «MinGW - Минималистичный GNU для Windows». Sourceforge.net. Получено 2012-07-09.
  14. ^ «Установщик интерфейса командной строки MinGW». Получено 14 июн 2012.
  15. ^ "(wiki :) MSYS". MinGW.org. Получено 2016-02-18.
  16. ^ "(wiki :) MSYS". MinGW.org. Получено 2016-02-18. Распространенным заблуждением является то, что MSYS - это «UNIX в Windows», MSYS сам по себе не содержит компилятора или библиотеки C, [...] и не предоставляет никаких специфических функций UNIX, таких как имена файлов с учетом регистра.
  17. ^ "(вики :) mingwPORT". MinGW.org. Получено 2012-07-09.
  18. ^ «(MinGW) Условия лицензирования». MinGW.org. Получено 2012-07-09.
  19. ^ а б "(MinGW :) О Cygwin". MinGW.org. Получено 2012-07-09.

внешние ссылки