MinGW: различия между версиями

Материал из DZWIKI
Перейти к навигации Перейти к поиску
(Новая страница: «{{Заготовка}} == Ссылки == * https://sourceforge.net/projects/mingw/ Категория:Категоризовать»)
 
Нет описания правки
Строка 1: Строка 1:
{{Заготовка}}
{{карточка программы
| разработчики = Колин Питерс {{l6e|en|Colin Peters}}, Ян-Яап-ван-дер-Хейден {{l6e|nl|Jan-Jaap van der Heijden}}, Мумит Хан {{l6e|en|Mumit Khan}}, Андерс Норландер {{l6e|en|Anders Norlander}}, Эрни Бойд {{l6e|cy|Earnie Boyd}}, Дейл Хендерсон {{l6e|en|Dale Handerson}} и др.
| написана на = [[Си (Язык программирования)|C]], [[C++]]
| последняя версия = 5.4.2
| дата последней версии = {{start date and age|2021|04|11}}
| сайт = https://osdn.net/projects/mingw/
}}
 
'''MinGW''' {{l6e|en|Minimalist GNU for Windows}}, ранее '''mingw32''' — набор инструментов [[Разработка программного обеспечения|разработки программного обеспечения]] для создания приложений под [[Windows]]<ref name="MinGWSummaryPage">{{Cite web |url=http://sourceforge.net/projects/mingw/ |title=SourceForge.net: MinGW — Minimalist GNU for Windows |access-date=2009-07-05 |archive-date=2009-07-01 |archive-url=https://web.archive.org/web/20090701100321/http://sourceforge.net/projects/mingw |deadlink=no }}</ref>. Включает в себя [[компилятор]], родной [[портирование|программный порт]] [[GNU Compiler Collection]] (GCC) под Windows вместе с набором свободно распространяемых библиотек импорта и [[заголовочный файл|заголовочных файлов]] для [[Windows API]]. В MinGW включены расширения для [[Библиотека времени исполнения|библиотеки времени выполнения]] [[Visual C++|Microsoft Visual C++]] для поддержки функциональности [[C99]]<ref name="MinGWSummaryPage" />. Поддерживает стандарт [[C++11|C++11.]]
 
== История ==
MinGW изначально назывался mingw32; затем цифры были отброшены, чтобы преодолеть заблуждение, что MinGW ограничен 32-битными системами<ref name="FAQ-What">{{Cite web |url=http://mingw.org/mingwfaq.shtml#faq-what |title=What is MinGW? |access-date=2009-07-05 |archive-date=2008-11-21 |archive-url=https://web.archive.org/web/20081121131941/http://www.mingw.org./mingwfaq.shtml#faq-what |deadlink=no }}</ref>. Первый релиз, созданный Колином Петерсом ({{lang-en|Colin Peters}}) в 1998 году, включал в себя только порт [[GNU Compiler Collection|GCC]] из [[Cygwin]]<ref name="history">{{Cite web |url=http://mingw.org/history |title=MinGW — History |access-date=2009-07-05 |archive-date=2009-08-14 |archive-url=https://web.archive.org/web/20090814080833/http://mingw.org/history |deadlink=no }}</ref><ref name="potm"/>. Первый нативный Windows-порт GCC был создан Jan-Jaap van der Heijden, также Heijden добавил [[binutils]] и [[make]]<ref name="history"/><ref name="potm"/>. Mumit Khan позже принял участие в разработке, добавив в комплект ещё больше специфичных для Windows возможностей, включая заголовочные файлы [[Win32]], написанные Anders Norlander<ref name="history"/><ref name="potm"/>. В 2000 проект был перемещён на [[SourceForge.net]], чтобы получить большую поддержку общественности и централизовать разработку<ref name="history"/><ref name="potm"/>.
 
В сентябре 2005 MinGW был выбран проектом месяца на [[SourceForge.net]]<ref name="potm">[http://sourceforge.net/potm/potm-2005-09.php SourceForge Project of the Month] {{webarchive|url=https://web.archive.org/web/20070823221136/http://sourceforge.net/potm/potm-2005-09.php |date=2007-08-23 }}</ref>.
 
== Компоненты MinGW ==
Проект MinGW поддерживает и распространяет несколько различных ключевых компонентов и дополнительных пакетов, включая различные порты [[GNU toolchain]], такие как [[GNU Compiler Collection|GCC]] и [[binutils]], переведённые в эквивалентные пакеты<ref name="FAQ-What" /><ref name="MinGWComponents">{{Cite web |url=http://sourceforge.net/project/showfiles.php?group_id=2435 |title=MinGW Components |access-date=2009-07-05 |archive-date=2009-06-29 |archive-url=https://web.archive.org/web/20090629184231/http://sourceforge.net/project/showfiles.php?group_id=2435 |deadlink=no }}</ref>. Эти утилиты могут быть использованы из [[Cmd.exe|командной строки Windows]] или интегрированы в [[Интегрированная среда разработки|IDE]].
 
В дополнение, компонент MinGW, известный как '''MSYS''' (''Minimal SYStem''), предоставляет win32-порты окружения легковесной Unix-подобной [[Интерфейс командной строки|оболочки]], включающей [[rxvt]] и набор инструментов [[POSIX]], достаточный для запуска скриптов [[autoconf]]<ref name="msys">{{Cite web |url=http://www.mingw.org/msys.shtml |title=MinGW — Minimal SYStem |access-date=2009-07-05 |archive-date=2009-01-05 |archive-url=https://web.archive.org/web/20090105233429/http://mingw.org/msys.shtml |deadlink=no }}</ref>.
 
Реализации заголовочных файлов [[Win32]] и библиотек импорта Win32 для связывания во время выполнения программы от начала до её завершения имеют [[Пермиссивная лицензия свободного ПО|пермиссивную лицензию]]<ref name="w32api">{{Cite web |url=http://www.mingw.org/license |title=Licensing Terms {{!}} MinGW<!-- Заголовок добавлен ботом --> |access-date=2009-07-05 |archive-date=2009-08-04 |archive-url=https://web.archive.org/web/20090804133441/http://www.mingw.org/license |deadlink=no }}</ref>, а порты GNU доступны под [[GNU General Public License]]. Бинарные сборки полного пакета MSYS и отдельных MinGW GNU утилит доступны для скачивания на сайте MinGW.
 
== Сравнение с Cygwin ==
MinGW [[форк|отделился]] от Cygwin 1.3.3. Несмотря на то, что и Cygwin, и MinGW используются для портирования программного обеспечения Unix под Windows, они используют разный подход<ref name="differencesCygwinMinGW">{{Cite web |url=http://www.mingw.org/node/21 |title=Cygwin {{!}} MinGW<!-- Заголовок добавлен ботом --> |access-date=2009-07-05 |archive-date=2009-08-28 |archive-url=https://web.archive.org/web/20090828110952/http://www.mingw.org/node/21 |deadlink=no }}</ref>: цель Cygwin — предоставить полный слой [[POSIX]] (подобный тому, который находится в Linux и других Unix-системах) над Windows, жертвуя производительностью там, где это необходимо для совместимости. Соответственно, такой подход требует от Win32-программ, написанных с Cygwin, запуска поверх [[копилефт]]ной библиотеки совместимости, которая должна распространяться с программой, а также с исходным кодом программы. Целью MinGW является предоставление нативной функциональности и производительности посредством прямых вызовов Windows API. В отличие от Cygwin, MinGW не нуждается в [[DLL]]-слое совместимости и, таким образом, программы не обязаны распространяться с исходным кодом.
 
Вследствие того, что MinGW использует вызовы [[Win32 API]], он не может предоставить полного [[POSIX]] API; он не может скомпилировать некоторые приложения Unix, которые могут быть скомпилированы с Cygwin. В частности, это относится к приложениям, которые требуют такой функциональности POSIX, как fork(), mmap() или ioctl()<ref name="differencesCygwinMinGW" /> и предполагают запуск в среде POSIX. Приложения, написанные с использованием кроссплатформенных библиотек, таких, как [[Simple DirectMedia Layer|SDL]], [[wxWidgets]], [[Qt]] или [[GTK+]], как правило, легче компилируются в MinGW, чем в Cygwin.
 
Комбинация MinGW и MSYS предоставляет небольшую независимую среду, которая может быть загружена на съемные носители, не требуя добавления записей в файлы реестра. Cygwin, предоставляя бо́льшую функциональность, является более сложным для установки и поддержки.
 
Также возможна [[Кросс-компилятор|кросс-компиляция]] приложений [[Windows]] с MinGW-GCC под управлением [[операционная система|операционных систем]] семейства [[POSIX]]. Это означает, что разработчику не нужно устанавливать Windows с [[MSYS]], чтобы скомпилировать программы, которые будут запускаться под [[Windows]] без [[Cygwin]].
 
== MinGW-w64 ==
В связи с тем, что в рамках изначального проекта MinGW не обещалось, что в его кодовую базу будут вноситься обновления, связанные с добавлением некоторых новых ключевых элементов Win32 API, а также наиболее необходимой поддержки 64-битной архитектуры, был создан проект [http://mingw-w64.sourceforge.net/ MinGW-w64]. Он является новой чистой реализацией портирования [[GNU Compiler Collection]] (GCC) под [[Microsoft Windows]], осуществленной изначально компанией OneVision и переданной в 2008 году<ref>{{cite web|title=История проекта MinGW-w64|url=http://sourceforge.net/apps/trac/mingw-w64/wiki/History|work=MinGW-w64 Wiki|accessdate=2013-05-30|archiveurl=https://www.webcitation.org/6IuipskOG?url=http://sourceforge.net/apps/trac/mingw-w64/wiki/History|archivedate=2013-08-16|deadurl=yes}}</ref> в общественное пользование ([[Public Domain]]). Сначала он был предложен на рассмотрение для интеграции с оригинальным проектом MinGW, но был отклонен в связи с подозрением на использование несвободного или проприетарного кода. По многим серьёзным причинам этического характера, связанным с отношением со стороны авторов MinGW<ref>{{cite web|title=Harmonizing mingwrt / w32api with mingw-w64|url=http://article.gmane.org/gmane.comp.gnu.mingw.devel/3390|work=MinGW Mailing list|accessdate=2013-05-30|archiveurl=https://www.webcitation.org/6IuirXucU?url=http://article.gmane.org/gmane.comp.gnu.mingw.devel/3390|archivedate=2013-08-16|deadurl=yes}}</ref>, ведущие разработчики кода MinGW-w64 решили больше не пытаться кооперироваться с проектом MinGW.
 
MinGW-w64 обеспечивает более полную реализацию Win32 API<ref>{{cite web|title=http://mingw-w64.sourceforge.net/picker.php|url=http://mingw-w64.sourceforge.net/picker.php|accessdate=2013-05-30|archiveurl=https://www.webcitation.org/6IuisuuZo?url=http://mingw-w64.sourceforge.net/picker.php|archivedate=2013-08-16|deadurl=yes}}</ref>, включая:
* лучшую поддержку стандарта C99
* лучшую поддержку pthreads (включая возможность задействовать функциональность стандарта C++11 библиотеки libstdc++ компилятора GCC)
* GCC multilib
* точки входа в программу с поддержкой Unicode (wmain/wWinMain)
* DDK (из проекта [[ReactOS]])
* DirectX (из проекта WINE)
* поддержку больших файлов
 
== Примечания ==
{{примечания}}
 
== См. также ==
* [[GCC]]
* [[Cygwin]]
* [[GnuWin32]]
* [[DJGPP]]


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


[[Категория:Категоризовать]]
[[Категория:Компиляторы Си]]
[[Категория:Компиляторы C++]]
[[Категория:Эмуляторы Unix]]
[[Категория:Свободные компиляторы и интерпретаторы]]
[[Категория:Программное обеспечение проекта GNU]]
[[Категория:Свободное программное обеспечение только под Windows]]
[[Категория:Программное обеспечение с лицензией GNU GPL]]

Версия от 20:49, 21 августа 2024

MinGW
Ошибка Lua в Модуль:Wikidata на строке 1098: attempt to index field 'wikibase' (a nil value).
Ошибка Lua в Модуль:Wikidata на строке 288: attempt to index field 'wikibase' (a nil value).
Автор Ошибка Lua в Модуль:Wikidata на строке 1098: attempt to index field 'wikibase' (a nil value).
Разработчики Колин Питерс (англ. Colin Peters), Ян-Яап-ван-дер-Хейден (нидерл. Jan-Jaap van der Heijden), Мумит Хан (англ. Mumit Khan), Андерс Норландер (англ. Anders Norlander), Эрни Бойд (валл. Earnie Boyd), Дейл Хендерсон (англ. Dale Handerson) и др.
Написана на C, C++
Первый выпуск Ошибка Lua в Модуль:Wikidata на строке 288: attempt to index field 'wikibase' (a nil value).
Последняя версия Ошибка Lua в Модуль:Wikidata на строке 1098: attempt to index field 'wikibase' (a nil value).
Кандидат в релизы Ошибка Lua в Модуль:Wikidata на строке 1098: attempt to index field 'wikibase' (a nil value).
Бета-версия Ошибка Lua в Модуль:Wikidata на строке 1098: attempt to index field 'wikibase' (a nil value).
Альфа-версия Ошибка Lua в Модуль:Wikidata на строке 1098: attempt to index field 'wikibase' (a nil value).
Тестовая версия Ошибка Lua в Модуль:Wikidata на строке 1098: attempt to index field 'wikibase' (a nil value).
Сайт https://osdn.net/projects/mingw/

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

История

MinGW изначально назывался mingw32; затем цифры были отброшены, чтобы преодолеть заблуждение, что MinGW ограничен 32-битными системами[2]. Первый релиз, созданный Колином Петерсом (англ. Colin Peters) в 1998 году, включал в себя только порт GCC из Cygwin[3][4]. Первый нативный Windows-порт GCC был создан Jan-Jaap van der Heijden, также 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, переведённые в эквивалентные пакеты[2][5]. Эти утилиты могут быть использованы из командной строки 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. Он является новой чистой реализацией портирования 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)
  • поддержку больших файлов

Примечания

  1. 1,0 1,1 SourceForge.net: MinGW — Minimalist GNU for Windows. Дата обращения: 5 июля 2009. Архивировано 1 июля 2009 года.
  2. 2,0 2,1 What is MinGW? Дата обращения: 5 июля 2009. Архивировано 21 ноября 2008 года.
  3. 3,0 3,1 3,2 3,3 MinGW — History. Дата обращения: 5 июля 2009. Архивировано 14 августа 2009 года.
  4. 4,0 4,1 4,2 4,3 4,4 SourceForge Project of the Month Шаблон:Webarchive
  5. MinGW Components. Дата обращения: 5 июля 2009. Архивировано 29 июня 2009 года.
  6. MinGW — Minimal SYStem. Дата обращения: 5 июля 2009. Архивировано 5 января 2009 года.
  7. Licensing Terms | MinGW. Дата обращения: 5 июля 2009. Архивировано 4 августа 2009 года.
  8. 8,0 8,1 Cygwin | MinGW. Дата обращения: 5 июля 2009. Архивировано 28 августа 2009 года.
  9. История проекта MinGW-w64 (недоступная ссылка — история). MinGW-w64 Wiki. Дата обращения: 30 мая 2013. Архивировано 16 августа 2013 года.
  10. Harmonizing mingwrt / w32api with mingw-w64 (недоступная ссылка — история). MinGW Mailing list. Дата обращения: 30 мая 2013. Архивировано 16 августа 2013 года.
  11. http://mingw-w64.sourceforge.net/picker.php (недоступная ссылка — история). Дата обращения: 30 мая 2013. Архивировано 16 августа 2013 года.

См. также

Ссылки