MinGW
![]() | |
Тип | компілятор |
---|---|
Розробник | MinGW Project |
Платформа | x86 |
Операційна система | Microsoft Windows |
Мова програмування | C++[https://www.openhub.net/p/mingw/analyses/latest/languages_summary_The_mingw_Open_Source_Project_on_Open_Hub:_Languages_Page] |
Ліцензія | GNU GPL |
Вебсайт | osdn.net/projects/mingw/ |
MinGW(англ. Minimalist GNU for Windows), раніше mingw32,— це набір вільного програмного забезпечення з відкритим кодом для розробки програм для Windows.
Він включає в себе порт GNU Compiler Collection(GCC), GNU Binutils, набір вільно розповсюджуваних Windows файлів заголовків та статичних бібліотек які дозволяють використовувати Windows API, GNU debugger та інші утиліти.
MinGW не використовує сторонніх C DLL файлів. Бібліотеки не розповсюджуються під ліцензією GNU's General Public License (GPL), тому не обов'язково надавати вихідний код разом з програмою.
MinGW спочатку мав назву mingw32(Minimalist GNU for W32), згідно з договором GNU W32 було скороченням для Windows. Числа були відкинуті, щоб не вважалось, що він буде обмеженим для використання лише на 32-бітних системах Перший реліз був створений Коліном Пітерсом(англ. Colin Peters) у 1998 році, у нього входив лише порт GCC з Cygwin. Ян-Яп ван дер Хейден(англ. Jan-Jaap van der Heijden) створив порт GCC для Windows і також додав binutils та make. Пізніше розробкою зайнявся Маміт Хан (англ. Mumit Khan), який додав системні заголовки Windows та інші пакунки. У 2000 році проєкт переїхав на SourceForge.net, щоб залучити більше підтримки від громади та централізувати розробку. У вересні 2005 року MinGW був обраний проєтом місяця на SourceForge.net.
Більшість мов, які підтримує GCC, також підтримуються і у MinGW. Це C, C++, Objective-C, Fortran, Ada.
MinGW за умовчанням виконує компонування з бібліотекою компонентів MSVCRT[en], яка є бібліотекою мови C, створену у 1998 році і тому не підтримує стандарт C99 і C89 не повністю. Відсутність підтримки C99 спричинило багато проблем у портуванні, особливо там де залучені специфікатори перетворень у printf-стилі. Ці проблеми були частково усунені імплементацією бібліотеки libmingwex сумісної з C99. MinGW-w64 усунув ці проблеми та запровадив повну POSIX-сумісну функціональність printf.
Проєкт MinGW підтримує і поширює кілька різних ключових компонентів і додаткових пакетів, включаючи різні порти GNU toolchain, такі як GCC і Binutils, переведені в еквіваленті пакети. Ці утиліти можуть бути використані з командного рядка вікна або інтегровані в IDE.
На додаток, компонент MinGW, відомий як MSYS (Minimal SYStem) надає win32-порти легкої Unix-подібної shell оболонки, що включає rxvt і набір інструментів POSIX, достатній для запуску скриптів Autoconf.
Реалізації заголовних файлів Win32 і бібліотек імпорту Win32 для зв'язування під час виконання програми від початку до її завершення мають пермісивну ліцензію, а порти GNU доступні під GNU General Public License. Бінарні збірки повного пакету MSYS та окремих MinGW GNU утиліт доступні для завантаження на сайті MinGW .
MinGW відокремився від Cygwin 1.3.3. Незважаючи на те, що і Cygwin, і MinGW використовуються для портування програмного забезпечення Unix під ОС Windows, вони використовують різний підхід: мета Cygwin — надати повний шар POSIX (подібний до того, який знаходиться в Linux та інших Unix-системах) над ОС Windows, жертвуючи продуктивністю там, де це необхідно для сумісності. Відповідно, такий підхід вимагає від Win32 програм, написаних з Cygwin, запуску поверх копілефтної бібліотеки сумісності, яка повинна поширюватися з програмою, а також з вихідним кодом програми. Метою MinGW є надання нативної функціональності і продуктивності за допомогою прямих викликів Windows API. На відміну від Cygwin, MinGW не потребує DLL — шару сумісності.
Внаслідок того, що MinGW використовує виклики Win32 API, він не може надати повного POSIX API; він не може скомпілювати деякі програми Unix, які можуть бути скомпільовані з Cygwin. Зокрема, це відноситься до застосунків, які вимагають такої функціональності POSIX, як fork, mmap або ioctl і допускають запуск в середовищі POSIX. Програми, написані з використанням багатоплатформних бібліотек, таких, як SDL, WxWidgets, Qt або GTK+, як правило, легше компілюються в MinGW, ніж в Cygwin.
Комбінація MinGW і MSYS надає невелике незалежне середовище, яке може бути завантажене на знімні носії, не вимагаючи додавання записів у файли реєстру. Cygwin, надаючи більшу функціональність, є складнішим для встановлення та підтримки.
Також можлива крос-компіляція застосунків для Windows з MinGW — GCC під управлінням операційних систем сімейства POSIX . Це означає, що розробнику не потрібно встановлювати Windows, з MSYS, щоб скомпілювати програми, які будуть запускатися під Windows без Cygwin.
У зв'язку з тим, що в рамках початкового проєкту 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
- GCC Homepage [Архівовано 11 січня 2012 у Wayback Machine.]
- MinGW Official Page [Архівовано 11 січня 2012 у Wayback Machine.]
- GNU Coding Standards [Архівовано 28 травня 2014 у Wayback Machine.]
- Sourceforge.net project of the month