MinGW

Поделись знанием:
Перейти к: навигация, поиск
MinGW
Разработчики

Колин Питерс (англ. Colin Peters), Ян-Яап-ван-дер-Хейден (нидерл. Jan-Jaap van der Heijden), Мумит Хан (англ. Mumit Khan), Андерс Норландер (англ. Anders Norlander), Эрни Бойд (валл. Earnie Boyd), Дейл Хендерсон (англ. Dale Handerson) и др.

Написана на

C, C++

К:Википедия:Статьи без изображений (тип: не указан)

MinGW (англ. Minimalist GNU for Windows), ранее mingw32, — компилятор, родной программный порт GNU Compiler Collection (GCC) под Windows, вместе с набором свободно распространяемых библиотек импорта и заголовочных файлов для Windows API. MinGW позволяет разработчикам создавать родные (native) приложения 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, также Heijdens добавил 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.

MinGW-w64

В связи с тем, что в рамках изначального проекта MinGW не обещалось, что в его кодовую базу будут вноситься обновления, связанные с добавлением некоторых новых ключевых элементов Win32 API, а также наиболее необходимой поддержки 64-битной архитектуры, был создан проект [mingw-w64.sourceforge.net/ MinGW-w64]. Он является новой чистой реализацией портирования GNU Compiler Collection (GCC) под Microsoft Windows осуществленной изначально компанией OneVision и переданной затем в 2008 году[9] в общественное пользование ( Public Domain ). Сначала он был предложен на рассмотрение для интеграции с оригинальным проектом MinGW, но был отклонен в связи с подозрением на использование не свободного или проприетарного кода. По многим серьезным причинам этического характера, связанным с отношением со стороны авторов MinGW[10], ведущие разработчики кода MinGW-w64 решили больше не пытаться кооперироваться с проектом MinGW.

MinGW-w64 обеспечивает более полную реализацию Win32 API,[11] включая:

  • лучшую поддержку стандарта C99
  • лучшую поддержку pthreads (включая возможность задействовать функциональность стандарта C++11 библиотеки libstdc++ компилятора GCC)
  • GCC multilib
  • точки входа в программу с поддержкой Unicode (wmain/wWinMain)
  • DDK (из проекта ReactOS)
  • DirectX (из проекта WINE)
  • Поддержку больших файлов
  • поддержка 64-битной архитектуры Windows

Напишите отзыв о статье "MinGW"

Примечания

  1. 1 2 [sourceforge.net/projects/mingw/ SourceForge.net: MinGW — Minimalist GNU for Windows]
  2. 1 2 [mingw.org/mingwfaq.shtml#faq-what What is MinGW?]
  3. 1 2 3 4 [mingw.org/history MinGW — History]
  4. 1 2 3 4 5 [sourceforge.net/potm/potm-2005-09.php SourceForge Project of the Month]
  5. [sourceforge.net/project/showfiles.php?group_id=2435 MinGW Components]
  6. [www.mingw.org/msys.shtml MinGW — Minimal SYStem]
  7. [www.mingw.org/license Licensing Terms | MinGW]
  8. 1 2 [www.mingw.org/node/21 Cygwin | MinGW]
  9. [sourceforge.net/apps/trac/mingw-w64/wiki/History История пректа MinGW-w64]. MinGW-w64 Wiki. Проверено 30 мая 2013. [www.webcitation.org/6IuipskOG Архивировано из первоисточника 16 августа 2013].
  10. [article.gmane.org/gmane.comp.gnu.mingw.devel/3390 Harmonizing mingwrt / w32api with mingw-w64]. MinGW Mailing list. Проверено 30 мая 2013. [www.webcitation.org/6IuirXucU Архивировано из первоисточника 16 августа 2013].
  11. [mingw-w64.sourceforge.net/picker.php mingw-w64.sourceforge.net/picker.php]. Проверено 30 мая 2013. [www.webcitation.org/6IuisuuZo Архивировано из первоисточника 16 августа 2013].

См. также

Ссылки

  • [gcc.gnu.org/ GCC Home Page]
  • [www.mingw.org/ Официальная страница MinGW]
  • [mingw-w64.sourceforge.net/ Официальная страница MinGW-w64]
  • [sourceforge.net/projects/mingw/ Страница MinGW] на SourceForge.net
  • [tdm-gcc.tdragon.net/ Unofficial TDM-MinGW GCC builds]
  • [mingw-w64.sourceforge.net/download.php GCC for both x64 & x86 Windows!]. Страница загрузки различных вариантов сборок проекта MinGW-w64. В том числе [sourceforge.net/projects/mingwbuilds/ Mingw-builds] - всегда последняя версия mingw-w64 GCC; установки не требует; из особенностей следует отметить основные: а) предоставляются 32 и 64 разрядные сборки, б) сборки являются двухцелевыми, в) полная поддержка С++11 thread support library.
  • [nuwen.net/mingw.html Неофициальная сборка]. Как правило, последняя версия GCC с разными библиотеками и утилитами. Установки не требует.

Отрывок, характеризующий MinGW

– Но это всё таки не значит, чтобы кампания была кончена, – сказал князь Андрей.
– А я думаю, что кончена. И так думают большие колпаки здесь, но не смеют сказать этого. Будет то, что я говорил в начале кампании, что не ваша echauffouree de Durenstein, [дюренштейнская стычка,] вообще не порох решит дело, а те, кто его выдумали, – сказал Билибин, повторяя одно из своих mots [словечек], распуская кожу на лбу и приостанавливаясь. – Вопрос только в том, что скажет берлинское свидание императора Александра с прусским королем. Ежели Пруссия вступит в союз, on forcera la main a l'Autriche, [принудят Австрию,] и будет война. Ежели же нет, то дело только в том, чтоб условиться, где составлять первоначальные статьи нового Саmро Formio. [Кампо Формио.]
– Но что за необычайная гениальность! – вдруг вскрикнул князь Андрей, сжимая свою маленькую руку и ударяя ею по столу. – И что за счастие этому человеку!
– Buonaparte? [Буонапарте?] – вопросительно сказал Билибин, морща лоб и этим давая чувствовать, что сейчас будет un mot [словечко]. – Bu onaparte? – сказал он, ударяя особенно на u . – Я думаю, однако, что теперь, когда он предписывает законы Австрии из Шенбрунна, il faut lui faire grace de l'u . [надо его избавить от и.] Я решительно делаю нововведение и называю его Bonaparte tout court [просто Бонапарт].
– Нет, без шуток, – сказал князь Андрей, – неужели вы думаете,что кампания кончена?
– Я вот что думаю. Австрия осталась в дурах, а она к этому не привыкла. И она отплатит. А в дурах она осталась оттого, что, во первых, провинции разорены (on dit, le православное est terrible pour le pillage), [говорят, что православное ужасно по части грабежей,] армия разбита, столица взята, и всё это pour les beaux yeux du [ради прекрасных глаз,] Сардинское величество. И потому – entre nous, mon cher [между нами, мой милый] – я чутьем слышу, что нас обманывают, я чутьем слышу сношения с Францией и проекты мира, тайного мира, отдельно заключенного.
– Это не может быть! – сказал князь Андрей, – это было бы слишком гадко.
– Qui vivra verra, [Поживем, увидим,] – сказал Билибин, распуская опять кожу в знак окончания разговора.
Когда князь Андрей пришел в приготовленную для него комнату и в чистом белье лег на пуховики и душистые гретые подушки, – он почувствовал, что то сражение, о котором он привез известие, было далеко, далеко от него. Прусский союз, измена Австрии, новое торжество Бонапарта, выход и парад, и прием императора Франца на завтра занимали его.
Он закрыл глаза, но в то же мгновение в ушах его затрещала канонада, пальба, стук колес экипажа, и вот опять спускаются с горы растянутые ниткой мушкатеры, и французы стреляют, и он чувствует, как содрогается его сердце, и он выезжает вперед рядом с Шмитом, и пули весело свистят вокруг него, и он испытывает то чувство удесятеренной радости жизни, какого он не испытывал с самого детства.
Он пробудился…
«Да, всё это было!…» сказал он, счастливо, детски улыбаясь сам себе, и заснул крепким, молодым сном.


На другой день он проснулся поздно. Возобновляя впечатления прошедшего, он вспомнил прежде всего то, что нынче надо представляться императору Францу, вспомнил военного министра, учтивого австрийского флигель адъютанта, Билибина и разговор вчерашнего вечера. Одевшись в полную парадную форму, которой он уже давно не надевал, для поездки во дворец, он, свежий, оживленный и красивый, с подвязанною рукой, вошел в кабинет Билибина. В кабинете находились четыре господина дипломатического корпуса. С князем Ипполитом Курагиным, который был секретарем посольства, Болконский был знаком; с другими его познакомил Билибин.
Господа, бывавшие у Билибина, светские, молодые, богатые и веселые люди, составляли и в Вене и здесь отдельный кружок, который Билибин, бывший главой этого кружка, называл наши, les nфtres. В кружке этом, состоявшем почти исключительно из дипломатов, видимо, были свои, не имеющие ничего общего с войной и политикой, интересы высшего света, отношений к некоторым женщинам и канцелярской стороны службы. Эти господа, повидимому, охотно, как своего (честь, которую они делали немногим), приняли в свой кружок князя Андрея. Из учтивости, и как предмет для вступления в разговор, ему сделали несколько вопросов об армии и сражении, и разговор опять рассыпался на непоследовательные, веселые шутки и пересуды.
– Но особенно хорошо, – говорил один, рассказывая неудачу товарища дипломата, – особенно хорошо то, что канцлер прямо сказал ему, что назначение его в Лондон есть повышение, и чтоб он так и смотрел на это. Видите вы его фигуру при этом?…
– Но что всего хуже, господа, я вам выдаю Курагина: человек в несчастии, и этим то пользуется этот Дон Жуан, этот ужасный человек!
Князь Ипполит лежал в вольтеровском кресле, положив ноги через ручку. Он засмеялся.
– Parlez moi de ca, [Ну ка, ну ка,] – сказал он.
– О, Дон Жуан! О, змея! – послышались голоса.
– Вы не знаете, Болконский, – обратился Билибин к князю Андрею, – что все ужасы французской армии (я чуть было не сказал – русской армии) – ничто в сравнении с тем, что наделал между женщинами этот человек.
– La femme est la compagne de l'homme, [Женщина – подруга мужчины,] – произнес князь Ипполит и стал смотреть в лорнет на свои поднятые ноги.
Билибин и наши расхохотались, глядя в глаза Ипполиту. Князь Андрей видел, что этот Ипполит, которого он (должно было признаться) почти ревновал к своей жене, был шутом в этом обществе.
– Нет, я должен вас угостить Курагиным, – сказал Билибин тихо Болконскому. – Он прелестен, когда рассуждает о политике, надо видеть эту важность.
Он подсел к Ипполиту и, собрав на лбу свои складки, завел с ним разговор о политике. Князь Андрей и другие обступили обоих.
– Le cabinet de Berlin ne peut pas exprimer un sentiment d'alliance, – начал Ипполит, значительно оглядывая всех, – sans exprimer… comme dans sa derieniere note… vous comprenez… vous comprenez… et puis si sa Majeste l'Empereur ne deroge pas au principe de notre alliance… [Берлинский кабинет не может выразить свое мнение о союзе, не выражая… как в своей последней ноте… вы понимаете… вы понимаете… впрочем, если его величество император не изменит сущности нашего союза…]
– Attendez, je n'ai pas fini… – сказал он князю Андрею, хватая его за руку. – Je suppose que l'intervention sera plus forte que la non intervention. Et… – Он помолчал. – On ne pourra pas imputer a la fin de non recevoir notre depeche du 28 novembre. Voila comment tout cela finira. [Подождите, я не кончил. Я думаю, что вмешательство будет прочнее чем невмешательство И… Невозможно считать дело оконченным непринятием нашей депеши от 28 ноября. Чем то всё это кончится.]
И он отпустил руку Болконского, показывая тем, что теперь он совсем кончил.
– Demosthenes, je te reconnais au caillou que tu as cache dans ta bouche d'or! [Демосфен, я узнаю тебя по камешку, который ты скрываешь в своих золотых устах!] – сказал Билибин, y которого шапка волос подвинулась на голове от удовольствия.