Mingw windows что это

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

MinGW (Minimalist GNU for Windows)

MinGW
Создатели: Колин Питерс
Разработчики: 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 используют новые исполняемые библиотеки, однако они не всегда предоставляются операционной системой или не являются свободно распространяемыми, что затрудняет работу с открытым программным обеспечением.

Читайте также:  Skype 4pda для windows

По причине использования 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, должны запускаться поверх копилефтной библиотеки совместимости, которая должна распространяться с программой, а также с исходным кодом программы.

Читайте также:  Microsoft word для windows phone

Вследствие того, что 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

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

MinGW — Minimalist GNU for Windows

Colin Peters, Jan-Jaap van der Heijden, Mumit Khan, Anders Norlander, Earnie Boyd, Dale Handerson и др.

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

Содержание

История

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

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

Компоненты MinGW

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

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

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

Сравнение с Cygwin

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

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

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

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

Читайте также:  Zabbix мониторинг всех процессов linux
Оцените статью
Тип