Mingw что это за программа
MinGW
Colin Peters, Jan-Jaap van der Heijden, Mumit Khan, Anders Norlander, Earnie Boyd, Dale Handerson и др.
Содержание
История
Компоненты 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.
Cygwin или MinGW? Собираем программы для Windows без Windows
Содержание статьи
В общем-то, даже в Microsoft уже признали проблему и сделали WSL (Windows Subsystem for Linux), чтобы запускать те приложения, у которых нативных версий под Windows нет. Однако если ты хочешь сделать свою программу доступной для широкой аудитории, то WSL вовсе не панацея, поскольку у среднего пользователя эта система вряд ли установлена и у нативных приложений возможностей для интеграции с Windows все равно больше.
Во многих случаях камень преткновения — не сам код программы, а система сборки. Если ты используешь кросс-платформенные библиотеки и не вызываешь специфичные функции POSIX, портирование может вообще не требоваться. Главное — собрать исполняемые файлы.
GNU и Windows
Для сборки программ с помощью GNU toolchain на Windows часто используют два проекта: Cygwin и MinGW + MSYS. У них схожие цели, но разные детали реализации. Давай разбираться.
Cygwin
Cygwin — самая полная реализация окружения GNU для Windows. Он предоставляет большую часть POSIX API в виде библиотеки, что позволяет собирать программы из UNIX без портирования, если только им не требуется семантика UNIX. Яркий пример — демоны, им нужен fork() и сигналы, которых нет в Windows, да и службы Windows устроены совсем иначе.
Кроме библиотеки, дистрибутив содержит набор классических команд UNIX и терминал. Реализации команд используют эту библиотеку и поддерживают некоторые возможности UNIX, такие как регистрозависимые имена файлов.
Целевой способ использования: если нет желания или возможности портировать программу на Windows или использовать только платформенно независимые API, ее можно собрать «под Cygwin», ценой зависимости от cygwin1.dll и относительной изоляции от всей остальной системы.
MinGW и MSYS
Если цель Cygwin — сделать возможной сборку немодифицированных приложений на Windows ценой внешней зависимости, то цель MinGW + MSYS — производить приложения без внешних зависимостей.
MinGW и MSYS — это независимые пакеты, но их часто путают и смешивают друг с другом (а часто путают и с Cygwin). Можно сказать, что MinGW — это эквивалент GCC и binutils, а MSYS — расширенный эквивалент coreutils.
Начнем с MSYS. MSYS — это более «нативная» и легковесная альтернатива Cygwin. Этот пакет включает библиотеку с реализациями функций POSIX, но она предназначена для внутреннего пользования, и авторы категорически не рекомендуют связывать с ней свои приложения.
Библиотека MSYS не реализует UNIX поверх Windows, а следует соглашениям Windows — к примеру, сознательно не учитывает регистр букв в путях к файлам. Главная цель MSYS — предоставить нужные для скриптов сборки программы вроде Bourne shell, make и прочее, что обычно требуется для autotools.
MinGW содержит версии GCC и binutils (ассемблер as, компоновщик ld и так далее), которые производят исполняемые файлы для Windows в формате PE/COFF. Здесь мы и подходим к ключевому моменту: MinGW, как и все остальные части GNU toolchain, такой же платформенно независимый проект.
Кросс-компиляция в GNU toolchain уже давно обычное дело, и в GCC целевая платформа и хост независимы друг от друга. Можно запускать GCC на Linux для x86 и собирать программы для Linux на ARM, или наоборот. Совпадать не обязаны не только рабочая и целевая архитектуры процессора. Точно так же не обязаны совпадать даже ОС и формат исполняемого файла.
Ставим MinGW
Авторы многих дистрибутивов GNU/Linux уже постарались за нас, так что многие кросс-версии GCC, включая MinGW, можно поставить из репозиториев.
MinGW-w64, несмотря на название, поддерживает и Win32, и Win64. Это форк MinGW, который создали в первую очередь для реализации недостающей в оригинальном проекте поддержки Win64, отсюда и название.
Hello World
Тестирование кросс-компилированных программ для других архитектур — непростая задача, но, поскольку наша целевая платформа — Windows на x86, мы легко можем протестировать их в Wine:
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Сборка Mingw в Windows своими руками
В сети можно найти много описаний сборки mingw и GNU утилит под ним. Я тоже решил написать свой вариант, так как во-первых он на русском. Во-вторых используются последние стабильные исходники (по состоянию на 27.01.2011). В третьих добавлена оптимизация циклов (graphite loop optimizations). В четвертых я описываю причины выбора тех или иных опций конфигурации исходников. В пятых, чтобы не забыть.
Зачем собирать mingw самому?
Что понадобится?
Как ни странно, но для сборки mingw нужен сам mingw. Товарищи постарались и сделали аккуратную программу установки, которая сама скачает и установит нужные пакеты. Она лежит на официальном сайте.
Помимо самого mingw при установке выбираем «C++ Compiler» и «MinGW Developer ToolKit». Ставим в C:\MinGW.
Не обойтись без терпения, настойчивости и удачи!
Сборка
Создаем на самом быстром винчейстере рабочую папочку C:\mbuild. Все исходники складываем в C:\mbuild\distrib. Выращивать mingw будем в C:\mbuild\release. Запускаем скачанный msys…
Небольшое замечание. В большинстве инструкций сказано сложить исходники gmp, mpfr и mpc в папку к gcc — он соберет их автоматически. Мы так делать не будем, потому что ходим прикрутить к gcc CLooP, а он зависит от gmp. То есть нам придется собирать gmp до того, как мы приступим к конфигурации gcc.
CLooG/PPL
Опции понятны из предыдущих описаний.
LIBICONV
BINUTILS
INCLUDE
Runtime и W32API
W32API
MingwRT
Из-за того, что gmp собирался не родным gcc он, скорее всего, имеет зависимости от libstdc++.dll и libgcc_s_dw2-1.dll. Первая была собрана с родным gcc, вторую придется скопировать из старого mingw. Как вариант можно пересобрать gmp в новом gcc для избавления от завимисотей.
Для уменьшения размера можете смело поудалять ненужные папки. Например share/doc.
Почти все. Для комфортной работы нам надо еще собрать make.
Теперь все. в папочке C:\mbuild\release получили свой аккуратный mingw. Добавляем пакетов по вкусу, оборачиваем в аккуратный скрипт и получим что-то вроде nuwen mingw. Удачных сборок!
Предоставляет полный набор инструментов для компилирования и линковки программ без использования каких либо платных библиотек или инструментов.
Все утилиты предназначены для работы из командной строки, но могут использоваться такими популярными IDE как NetBeans, Eclipse и DevCPP, которые предоставляют графический интерфейс к компиляторам GCC.
Обзор GCC
Впоследствии функциональность компилятора была расширена и включена поддержка таких языков программирования как Objective-C, Java, Fortran, ADA и другие.
Установка MinGW
Официальный сайт MinGW http://www.mingw.org. Чтобы скачать комплект, перейдите на страницу http://sourceforge.net/downloads/mingw, вам понадобится файл «mingw-get-inst» с расширением EXE.
Для установки требуется подключение к сети интернет.
Рзмещайте все файлы по стандартному пути, например, «C:\MinGW».
Если всё выбрано правильно, жмём «Install».
Нам потребуется значение переменной PATH, там должны быть прописаны пути к папкам с исполняемыми файлами MinGW и MSYS, в данном случае это директории «C:\MinGW\bin» и «C:\MinGW\msys\1.0\bin».
Если эти значения не были автоматически добавлены в переменную в процессе установки, допишите их вручную, добавте в начало строку «C:\MinGW\bin;C:\MinGW\msys\1.0\bin;», только без кавычек.
Если в вашей операционной системе отсутствует переменная PATH, то создайте её самостоятельно.
Теперь, когда все инструменты установлены, можно использовать GCC компиляторы в режиме командной строки или настроить их использование в своей IDE.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
MinGW (Minimalist GNU for Windows)
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 был выбран проектом месяца.
Поддержка языков программирования
Большинство языков, которые поддерживаются 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
Сравнение с Cygwin
MinGW является форком от Cygwin версии 1.3.3. Несмотря на то, что и Cygwin, и MinGW используются для портирования программного обеспечения Unix под Windows, они используют разный подход: цель Cygwin — предоставить полный слой POSIX, включающий в себя реализацию всех основных системных вызовов и библиотек системы UNIX, жертвуя производительностью там, где это необходимо для совместимости. Целью MinGW является предоставление нативной функциональности и производительности посредством прямых вызовов Windows API. В отличие от Cygwin, MinGW не нуждается в DLL-слое совместимости и, таким образом, программы не обязаны распространяться с исходным кодом. Программы под Windows, написанные с Cygwin, должны запускаться поверх копилефтной библиотеки совместимости, которая должна распространяться с программой, а также с исходным кодом программы.
Комбинация MinGW и MSYS предоставляет небольшую независимую среду, которая может быть загружена на съемные носители, не требуя добавления записей в файлы реестра. Cygwin, предоставляя бо́льшую функциональность, является более сложным для установки и поддержки.
Также возможна кросс-компиляция приложений Microsoft Windows с MinGW-GCC под управлением операционных систем семейства POSIX. Это означает, что разработчику не нужно устанавливать Windows с MSYS, чтобы скомпилировать программы, которые будут запускаться под Microsoft Windows без Cygwin.
MinGW-w64
В связи с тем, что в рамках изначального проекта 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, включая:
Установка
Сборка Mingw в Windows своими руками
Зачем собирать mingw самому?