- Национальная библиотека им. Н. Э. Баумана Bauman National Library
- Персональные инструменты
- MinGW (Minimalist GNU for Windows)
- Содержание
- История
- Поддержка языков программирования
- Компоненты MinGW
- Сравнение с Cygwin
- MinGW-w64
- Установка
- Сборка Mingw в Windows своими руками
- MinGW
- Содержание
- История
- Компоненты MinGW
- Сравнение с Cygwin
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
MinGW (Minimalist GNU for Windows)
Создатели: | Колин Питерс |
---|---|
Разработчики: | MinGW Project |
Выпущена: | 1 июля 1998 года |
Постоянный выпуск: | 4.8.1-4 / 11 октября 2013 |
Состояние разработки: | активна |
Написана на: | C/C++ |
Операционная система: | Microsoft Windows, UNIX-подобные (в качестве кросс-компилятора) |
Локализация: | Английский |
Тип ПО: | Компилятор |
Лицензия: | Общественное достояние (заголовочные файлы), GNU GPL (компилятор и инструментарий) |
Веб-сайт | mingw .org |
MinGW (Minimalist GNU for Windows), ранее mingw32 — бесплатная среда разработки родных приложений под Microsoft Windows с открытым исходным кодом. Состоит из портированного GNU Compiler Collection, GNU Binutils (ассемблер, компоновщик, менеджер архивации), GNU Debugger, набора свободно распространяемых библиотек импорта и заголовочных файлов для Microsoft Windows API и прочего.
MinGW не нуждается в DLL-слое совместимости, и поэтому, если в программе не используется лицензия GPL, программы не обязательно распространять вместе с исходным кодом.
MinGW может использоваться как на своей родной платформе Microsoft Windows, так и на UNIX-подобных и на Cygwin
Также, другими авторами в качестве альтернативы MinGW, был разработан компилятор MinGW-w64, который поддерживает 64-х битные системы. Сначала он был предложен на рассмотрение для интеграции с оригинальным проектом MinGW, но был отклонен в связи с подозрением на использование несвободного кода. В дальнейшем, разработчики MinGW-w64 отказались от дальнейшего сотрудничества с MinGW.
Содержание
История
Изначально MinGW назывался mingw32, но впоследствии от этого названия отказались, чтобы подчеркнуть, что MinGW не ограничен 32-битными системами. Первый релиз, созданный Колином Петерсом в 1998 году, включал в себя только порт GCC из Cygwin. Ян-Яап ван дер Хайден создал первый нативный Windows-порт GCC, добавив также binutils и make. Мумит Кхан позже принял участие в разработке, добавив в комплект больше специфичных для Windows возможностей, включая заголовочные файлы Win32, написанные Андершом Нурландером. Чтобы получить большую поддержку общественности и централизовать разработку, в 2000 проект был перемещён на SourceForge.net, где в сентябре 2005 был выбран проектом месяца.
В конце 2013 года, взамен MSYS, началась разработка MSYS2, включающего 32-х и 64-х битные пакеты MinGW. Оригинальный проект MSYS уже не мог конкурировать с Cygwin и был практически заброшен. MSYS2 представляет собой усовершенствованный MSYS и основывается на Cygwin и MinGW-w64 для лучшей совместимости с родным софтом Windows. В качестве менеджера пакетов MSYS2 использует Arch Linux’s Pacman [Источник 1] .
Поддержка языков программирования
Большинство языков, которые поддерживаются GCC, поддерживаются и в MinGW. Среди них C, C++, Objective-C, Objective-C++, Fortran и Ada. Также используются библиотека из GCC (libstdc++ for C++, libgfortran for Fortran, др.)
Необходимо отметить, что GCC не включает в себя библиотеку языка C. По умолчанию MinGW подключается к предоставляемой Windows библиотеке MSVCRT, к которой так же подключался Microsoft Visual Studio 6.0 1998 года. Библиотека не поддерживает стандарт C99, так как его ещё не существовало к моменту выпуска MSVCRT. Стандарт C89 поддерживается, однако не полностью. MSVCRT не изменялась в течение многих лет, и в будущем каких-либо изменений не ожидается. Новые версии Visual Studio используют новые исполняемые библиотеки, однако они не всегда предоставляются операционной системой или не являются свободно распространяемыми, что затрудняет работу с открытым программным обеспечением.
По причине использования MSVCRT, MinGW имеет множество ограничений и особенностей с совместимостью как и Microsoft Visual Studio 6.0. При разработке не следует полагаться на C99, только на C89. К примеру, новый формат символов в printf %a и %ll не поддерживается (хотя для последнего существует обходное решение).
Разработчики MinGW пытались разрешить подобные проблемы во вспомогательной библиотеке mingwex (или более точно libmingwex). Сейчас она достаточно далека от совершенства и, вполне вероятно, что работа над ней останется незавершённой. Для примера, добавление поддержки %a в ранее упомянутый, printf потребовало бы полное изменение устройства функции. Использование библиотеки glibc не помогло в решении проблемы из-за её лицензии. [Источник 2] Однако, проблема разрешилась в MinGW-w64, где к тому же обеспечивается полной соответствие стандартам POSIX.
Компоненты MinGW
Проект MinGW поддерживает и распространяет несколько различных ключевых компонентов и дополнительных пакетов, включая различные порты GNU toolchain, такие как GCC и binutils, переведённые в эквивалентные пакеты [Источник 3] . Эти утилиты могут использоваться из командной строки Windows или интегрированы в IDE. Пакеты могут быть установлены через командную строку в приложении mingw-get [Источник 4] .
MinGW поддерживает динамические библиотеки, которые обычно называют по образцу .lib и .dll , и статические библиотеки, названные по типу lib .a , как и принято в UNIX и подобных ему системах.
Реализации заголовочных файлов Win32 и библиотек импорта Win32 имеют пермиссивную лицензию [Источник 5] , а порты GNU доступны под GNU General Public License. Бинарные сборки полного пакета MSYS и отдельных MinGW GNU утилит доступны для скачивания на сайте MinGW.
В дополнение, компонент MinGW, известный как MSYS (Minimal SYStem) предоставляет win32-порты окружения легковесной Unix-подобной оболочки, включающей rxvt и набор инструментов POSIX, достаточный для запуска скриптов autoconf [Источник 6] . Однако, он не предоставляет компилятор языка C или файловую систему, чувствительную к регистру [Источник 7] .
MSYS — это коллекция утилит GNU таких как bash , make , gawk и grep , которая позволяет собирать приложения и программы, зависящие от традиционных инструментов UNIX. Она предназначена для обновления MinGW и исправления недоработок командной строки. Примером будет разработка библиотеки, использующей пакет autotools для создания систем. Пользователи для этого скорее всего запустят ./configure нежели make . Настройки консольных приложений требуют консольный интерпретатор, который не предоставляется Windows, но предоставляется MSYS.
Ошибочно считать, что MSYS — это «UNIX на Windows». MSYS сам по себе не содержит никаких компиляторов или библиотек C, следовательно он не предоставляет возможности портировать программы с UNIX на Windows и какого-либо специфического для UNIX функционала (например имена файлов, чувствительные к регистру). Пользователям, ищущим подобное, рекомендуется ознакомиться с Cygwin или Microsoft Interix. [Источник 8]
mingwPORTs — пользовательские дополнения, разработанные для коллекции программного обеспечения MinGW. Они распространяются не в виде скомпилированных двоичных пакетов, а в форме интерактивных Bourne shell-скриптов, которые автоматически загружают и модифицируют исходный код, после чего компилируют и устанавливают его. Пользователи, желающие установить какое либо приложение из mingwPORT, должны перед этим установить MinGW и MSYS. [Источник 9]
Сравнение с Cygwin
MinGW является форком от Cygwin версии 1.3.3. Несмотря на то, что и Cygwin, и MinGW используются для портирования программного обеспечения Unix под Windows, они используют разный подход: цель Cygwin — предоставить полный слой POSIX, включающий в себя реализацию всех основных системных вызовов и библиотек системы UNIX, жертвуя производительностью там, где это необходимо для совместимости. Целью MinGW является предоставление нативной функциональности и производительности посредством прямых вызовов Windows API. В отличие от Cygwin, MinGW не нуждается в DLL-слое совместимости и, таким образом, программы не обязаны распространяться с исходным кодом. Программы под Windows, написанные с Cygwin, должны запускаться поверх копилефтной библиотеки совместимости, которая должна распространяться с программой, а также с исходным кодом программы.
Вследствие того, что MinGW использует вызовы Win32 API, он не может предоставить полного POSIX API; он не может скомпилировать некоторые приложения Unix, которые могут быть скомпилированы с Cygwin. В частности, это относится к приложениям, которые требуют такой функциональности POSIX, как fork() , mmap() или ioctl() [Источник 10] и предполагают запуск в среде POSIX. Приложения, написанные с использованием кроссплатформенных библиотек, таких, как SDL, wxWidgets, Qt или GTK+, как правило, легче компилируются в MinGW, чем в Cygwin.
Комбинация MinGW и MSYS предоставляет небольшую независимую среду, которая может быть загружена на съемные носители, не требуя добавления записей в файлы реестра. Cygwin, предоставляя бо́льшую функциональность, является более сложным для установки и поддержки.
Также возможна кросс-компиляция приложений Microsoft Windows с MinGW-GCC под управлением операционных систем семейства POSIX. Это означает, что разработчику не нужно устанавливать Windows с MSYS, чтобы скомпилировать программы, которые будут запускаться под Microsoft Windows без Cygwin.
MinGW-w64
Создатели: | OneVision Software |
---|---|
Разработчики: | Kai Tietz |
Выпущена: | 2005 |
Постоянный выпуск: | 5.0.1 / 6 января 2017 |
Написана на: | C/C++ |
Операционная система: | Microsoft Windows |
Тип ПО: | Компилятор |
Лицензия: | Общественное достояние (заголовочные файлы), GNU GPL (компилятор и инструментарий), Zope Public License |
Веб-сайт | mingw-w64 .org |
В связи с тем, что в рамках изначального проекта MinGW не обещалось, что в его кодовую базу будут вноситься обновления, связанные с добавлением некоторых новых ключевых элементов Win32 API, а также наиболее необходимой поддержки 64-битной архитектуры, был создан проект MinGW-w64. Он является новой чистой реализацией портирования GNU Compiler Collection (GCC) под Microsoft Windows, осуществленной изначально компанией OneVision и переданной в 2008 году в общественное пользование (Public Domain). Сначала он был предложен на рассмотрение для интеграции с оригинальным проектом MinGW, но был отклонен в связи с подозрением на использование несвободного или проприетарного кода. По многим серьезным причинам этического характера, связанным с отношением со стороны авторов MinGW, ведущие разработчики кода MinGW-w64 решили больше не пытаться кооперироваться с проектом MinGW.
MinGW-w64 обеспечивает более полную реализацию Win32 API, включая:
- Лучшую поддержку стандарта C99
- Лучшую поддержку pthreads (включая возможность задействовать функциональность стандарта C++11 библиотеки libstdc++ компилятора GCC)
- GCC multilib
- Точки входа в программу с поддержкой Unicode (wmain/wWinMain)
- DDK (из проекта ReactOS)
- DirectX (из проекта WINE)
- Поддержку больших файлов
- Поддержку 64-битной архитектуры Windows
Установка
Сборка Mingw в Windows своими руками
Зачем собирать mingw самому?
- Для того, чтобы сконфигурировать компоненты так как нужно мне, а не той тысяче пользователей, которые скачивают стандартный пакет с официального сайта.
- Чтобы я сам определял какие компоненты мне нужны в виде shared библиотек с dll-ками, а какие я линкую статически.
- Чтобы быть уверенным, что gcc работает максимально эффективно.
- Чтобы исключить возможные закладки в исполняемые модули.
- Чтобы лучше понять как собираются и устанавливаются GNU утилиты.
MinGW
Тип |
---|