МинГВ
![]() Менеджер установки MinGW | |
Оригинальный автор(ы) | Колин Питерс |
---|---|
Разработчик(и) | Проект МинГВ |
Первоначальный выпуск | 1 июля 1998 г |
Стабильная версия | GNU BinUtils — 2.32-1, Менеджер установки — 0.6.3, WSL — 5.4.2 [1] / 12 апреля 2021 г |
Репозиторий | ОСДН |
Написано в | С , С++ |
Операционная система | Microsoft Windows , Unix-подобная (в качестве кросс-компилятора ) |
Тип | Компилятор |
Лицензия | Общественное достояние (заголовки), Стандартная общественная лицензия GNU (компилятор и набор инструментов) |
Веб-сайт | ОСДН |
MinGW («Минималистский GNU для Windows»), ранее mingw32 , — это с открытым исходным кодом бесплатная среда разработки программного обеспечения для создания Microsoft Windows приложений .
MinGW включает в себя порт коллекции компиляторов GNU (GCC), GNU Binutils для Windows ( ассемблер , компоновщик , менеджер архивов ), набор свободно распространяемых заголовочных файлов Windows и библиотеки статического импорта , которые позволяют использовать Windows API , Windows API. встроенная сборка GNU проекта GNU Debugger и различные утилиты.
MinGW не полагается на сторонние C времени выполнения файлы динамической библиотеки (DLL), а поскольку библиотеки времени выполнения не распространяются с использованием GNU General Public License (GPL), нет необходимости распространять исходный код вместе с созданными программами. , если только где-нибудь в программе не используется библиотека GPL. [2]
MinGW может быть запущен либо на собственной платформе Microsoft Windows, либо на кросс-платформе Linux (или другой Unix), либо «кросс-родной» на Cygwin . Хотя программы, созданные под MinGW, являются 32-битными исполняемыми файлами, их можно использовать как в 32-, так и в 64-битных версиях Windows.
Развитие проекта MinGW разветвилось с созданием в 2005–2008 годах альтернативного проекта под названием Mingw-w64 .
История
[ редактировать ]Первоначально MinGW назывался mingw32 («Минималистический GNU для W32»), следуя соглашению GNU, согласно которому Windows сокращается до «W32». [3] [4] Цифры были опущены, чтобы избежать предположения, что производство будет ограничено созданием 32-битных двоичных файлов . Колин Питерс является автором первоначальной версии в 1998 году, состоящей только из Cygwin-порта GCC. [5] [6] Ян-Яап ван дер Хейден создал собственный порт GCC для Windows и добавил binutils и make . [5] [6] Позже Мумит Хан взял на себя разработку, добавив в пакет больше функций, специфичных для Windows, включая системные заголовки Windows от Андерса Норландера. [5] [6] В 2000 году проект был перенесен на SourceForge, чтобы получить дополнительную помощь от сообщества и централизовать его разработку. [5] [6]
MinGW был выбран проектом месяца на SourceForge в сентябре 2005 года. [6]
MSYS (сокращение от «Минимальная система») была представлена как оболочки Bourne. система интерпретатора командной строки [7] с целью лучшей совместимости с собственным программным обеспечением Windows.
В 2018 году из-за разногласий с SourceForge по поводу администрирования списков рассылки MinGW перешёл на OSDN . [8]
Вилка
[ редактировать ]В 2007 году появился форк оригинального MinGW под названием Mingw-w64 , обеспечивающий поддержку 64-битных версий и новых API. С тех пор он получил широкое применение и распространение. MSYS2 («минимальная система 2») — это платформа распространения программного обеспечения и разработки для Microsoft Windows , основанная на Mingw-w64 и Cygwin , которая помогает развертывать код из мира Unix в Windows. [9]
Поддержка языков программирования
[ редактировать ]Большинство языков, поддерживаемых GCC, также поддерживаются портом MinGW. К ним относятся C , C++ , Objective-C , Objective-C++ , Fortran и Ada . Используются библиотеки времени выполнения GCC (libstdc++ для C++, libgfortran для Fortran и т. д.). [ нужна ссылка ]
MinGW по умолчанию связывается с библиотекой компонентов ОС Windows MSVCRT , которая представляет собой библиотеку C, с которой связан Visual C++ версии 6.0 (первоначальной целью была CRTDLL), которая была выпущена в 1998 году и поэтому не включает поддержку функций C99 или даже всех из С89 . Хотя ориентация на 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 поддерживает динамические библиотеки, названные в соответствии с <name>.lib
и <name>.dll
соглашения, а также статические библиотеки, соответствующие lib<name>.a
соглашение об именах, распространенное в Unix и Unix-подобных системах.
Кроме того, компонент MinGW, известный как MSYS ( минимальная система ), предоставляет порты Windows облегченной Unix-подобной оболочки , включая rxvt и набор инструментов POSIX, достаточных для запуска autoconf . сценариев [15] но он не предоставляет компилятор C или файловую систему с учетом регистра . [16]
mingwPORT — это добавление пользователей к коллекции программного обеспечения MinGW. Вместо того, чтобы предоставлять эти «надстройки» в виде предварительно скомпилированных двоичных пакетов, они поставляются в виде интерактивных сценариев оболочки Bourne , которые проводят конечного пользователя через процесс автоматической загрузки и исправления исходного исходного кода, а затем его сборки и установки. Пользователи, желающие создать какое-либо приложение из mingwPORT, должны сначала установить MinGW и MSYS. [17]
Реализация системных заголовков Windows и статических библиотек импорта выпускается под разрешительной лицензией . [18] в то время как порты GNU предоставляются по лицензии GNU General Public License . Бинарные загрузки как полного пакета MSYS, так и отдельных утилит MinGW GNU доступны на сайте MinGW.
Сравнение с Cygwin
[ редактировать ]Хотя и Cygwin, и MinGW можно использовать для переноса программного обеспечения Unix в Windows, у них разные подходы: [19] Cygwin стремится предоставить полный уровень POSIX , включающий полную реализацию всех основных системных вызовов и библиотек Unix. Совместимость считается более приоритетной, чем производительность. С другой стороны, приоритеты MinGW — простота и производительность. По существу, он не предоставляет определенные API-интерфейсы POSIX , которые невозможно легко реализовать с помощью API-интерфейсов Windows, например: fork()
, mmap()
и ioctl()
. [19] Приложения, написанные с использованием кроссплатформенной библиотеки, которая сама была перенесена на MinGW, например SDL , wxWidgets , Qt или GTK , обычно компилируются в MinGW так же легко, как и в Cygwin.
Программы Windows, написанные с помощью Cygwin, запускаются поверх с авторским левом совместимой DLL , которая должна распространяться вместе с программой, если только она не связана статически. При динамической компоновке программа также должна предоставить информацию о том, где получить исходный код Cygwin. MinGW не требует уровня совместимости , поскольку программы на основе MinGW компилируются с прямыми вызовами API Windows.
Комбинация MinGW и MSYS обеспечивает небольшую автономную среду, которую можно загрузить на съемный носитель, не оставляя записей в реестре или файлов на компьютере.
Также возможно перекрестно скомпилировать приложения Windows с MinGW-GCC в системах POSIX. Это означает, что разработчикам не требуется установка Windows с MSYS для компиляции программного обеспечения, которое будет работать в Windows с Cygwin или без него.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Загрузить список пакетов» . osdn.net . Проверено 4 февраля 2023 г.
- ^ «(MinGW включен) MinGW» . MinGW.org/вики . 07.07.2008. Архивировано из оригинала 6 октября 2013 г. Проверено 16 октября 2013 г.
- ^ «Стандарты кодирования GNU» . gnu.org . Фонд свободного программного обеспечения. 27 апреля 2013 г. 5.5 Переносимость между типами систем . Проверено 1 июля 2013 г.
- ^ Столлман, Ричард (18 сентября 2000 г.). «Libtool Re: Именование проекта gnu-win32?» . libtool (список рассылки) . Проверено 21 мая 2013 г.
- ^ Перейти обратно: а б с д «История | МинГВ» . MinGW.org. Архивировано из оригинала 23 августа 2012 г. Проверено 9 июля 2012 г.
- ^ Перейти обратно: а б с д и «Проект месяца (sourceforge)» . SourceForge.net. 31 августа 2005 г. Проверено 9 июля 2012 г.
- ^ "(вики:) MSYS" . MinGW.org. Архивировано из оригинала 28 августа 2006 г. Проверено 16 апреля 2020 г.
MSYS, сокращение от «Minimal SYStem», представляет собой систему интерпретатора командной строки Bourne Shell.
- ^ «Объявление о переходе на OSDN.net» . Mingw-пользователи (список рассылки). 21 января 2018 г.
- ^ MSYS2: официальная домашняя страница , репозиторий кода.
- ^ "(МинГВ И)С99" . MinGW.org/вики . 21 июня 2010 г. Архивировано из оригинала 20 мая 2011 г. Проверено 29 марта 2011 г.
- ^ «Взаимодействие библиотек, созданных компиляторами разных производителей | MinGW» . mingw.org . Архивировано из оригинала 12 июня 2010 г.
- ^ «(MinGW) Часто задаваемые вопросы» . MinGW.org. Архивировано из оригинала 21 ноября 2008 г. Проверено 9 июля 2012 г.
- ^ «MinGW — Минималистичный GNU для Windows» . Sourceforge.net . Проверено 9 июля 2012 г.
- ^ «Установщик интерфейса командной строки MinGW» . Архивировано из оригинала 15 июня 2012 года . Проверено 14 июня 2012 г.
- ^ "(вики:) MSYS" . MinGW.org. Архивировано из оригинала 18 февраля 2016 г. Проверено 18 февраля 2016 г.
- ^ "(вики:) MSYS" . MinGW.org. Архивировано из оригинала 18 февраля 2016 г. Проверено 18 февраля 2016 г.
Распространенным заблуждением является то, что MSYS - это «UNIX в Windows», MSYS сам по себе не содержит компилятора или библиотеки C, [...] и не предоставляет каких-либо специфичных для UNIX функций, таких как имена файлов с учетом регистра.
- ^ "(вики:) mingwPORT" . MinGW.org. Архивировано из оригинала 23 июля 2012 г. Проверено 9 июля 2012 г.
- ^ «(MinGW) Условия лицензирования» . MinGW.org. Архивировано из оригинала 4 августа 2009 г. Проверено 9 июля 2012 г.
- ^ Перейти обратно: а б «(MinGW:) О Cygwin» . MinGW.org. Архивировано из оригинала 28 августа 2009 г. Проверено 9 июля 2012 г.
Внешние ссылки
[ редактировать ]- Официальный сайт МинГВ
- 64-битный дистрибутив MinGW nuwen - поддерживается сотрудником Microsoft
- MXE — Makefiles для сборки MinGW в Unix и многих распространенных библиотеках зависимостей, доступны предварительно созданные пакеты.