MinGW

Z Wikipedie, otevřené encyklopedie
MinGW
VývojářMinGW Project
Aktuální verze11.0.1 (29. dubna 2023)
Operační systémMicrosoft Windows
Platformax86
Vyvíjeno vC++ a C
Typ softwaruKompilátor
LicencePublic domain (hlavičky)
GNU General Public License (kompilátor a toolchain)
Webwww.MinGW-w64.org
Některá data mohou pocházet z datové položky.

MinGW (dříve mingw32, Minimalist GNU for Windows) je v informatice kompilátor GCC a GNU binutils, kterými je možné vytvořit nativní aplikace pro platformu Microsoft Windows (buď přímo ve Windows nebo jako křížový překladač, čímž usnadňuje portování).[1][2] Obsahuje množinu volně šiřitelných hlavičkových souborů pro Windows API. Součástí MinGW jsou rozšíření pro běhovou knihovnu Microsoft Visual C++ pro podporu C99.[1]

Hlavní vlastností MinGW (která nemusí být Open Source uživatelům zpočátku jasná) je, že nevyužívá standardní knihovnu GNU libc, ale snaží se využívat přímo knihovnu MS C Runtime Library (MSVCRT). Výsledkem jsou tedy nativní programy (na rozdíl od projektu Cygwin). Pro jazyky jiné než C používá MinGW GNU knihovny (např. GNU libstdc++ pro C++).

Historie[editovat | editovat zdroj]

MinGW byl původně nazván mingw32; čísla byla odstraněna aby se zamezilo interpretacím, že bude omezen na 32bitové systémy.[3] Colin Peters autorizoval první vydání v 1998, které obsahovalo pouze port GCC na Cygwin.[4][5] Jan-Jaap van der Heijden vytvořil port GCC pro Windows, přidal GNU Binutils a soubor make.[4][5] Později vývoj převzal Mumit Khan a přidal do balíku vlastnosti specifické pro Windows, včetně hlaviček Win32 od Anderse Norlandera.[4][5] V roce 2000 byl projekt přestěhován na SourceForge, aby tak vyzval komunitu ke spolupráci a usměrnil vývoj.[4][5]

MinGW bylo vyhlášeno projektem měsíce na stránkách SourceForge v září 2005.[5]

Komponenty MinGW[editovat | editovat zdroj]

Projekt MinGW spravuje a distribuuje několik různých jádrových komponent a doplňkových balíků, včetně řady portů GNU toolchainů, jako např. GCC a GNU Binutils, přeložených do ekvivalentních balíků.[6][3] Tyto utility mohou být využívány z příkazové řádky Windows nebo integrovány do IDE. MinGW umožňuje pojmenovávání knihoven podle konvencí jméno.lib a jméno.dll a také s formou lib<name>.a používanou na unixových systémech.

Komponenta MinGW známá jako MSYS (Minimal SYStem) navíc nabízí port odlehčeného prostředí unixového příkazového řádku do Win32, včetně rxvt a některých POSIXových utilit, které umožňují běh autokonfiguračních skriptů.[7][8]

Implementace hlavičkových souborů Win32 a knihoven pro linkování za běhu jsou vydány pod permissive license,[9] zatímco porty GNU jsou k dispozici pod GNU General Public License. Na stránkách MinGW jsou k dispozici ke stažení binární soubory kompletního MSYS balíku a individuálních MinGW GNU utilit.

Srovnání s Cygwinem[editovat | editovat zdroj]

MinGW byl odvozen od Cygwinu verze 1.3.3.[4] Přestože jak Cygwin tak MinGW mohou být použity k portaci Unix software na Windows, využívají k tomu odlišné postupy:[10] Cygwin se zaměřuje na poskytnutí kompletní vrstvy POSIX (podobné té v Linuxu nebo jiných Unixových systémech) běžící nad aplikační vrstvou Windows, poskytujíc tak kompatibilitu za cenu určitého snížení výpočetního výkonu. Proto tento postup vyžaduje, aby programy pro Win32 napsané v Cygwinu běžely nad kompatibilní knihovnou, která musí být distribuovaná se zdrojovým kódem programu pod copyleft licencí. MinGW se zaměřuje na poskytnutí nativní funkcionality a výkonu přímo přes volání Windows API. Na rozdíl od Cygwinu, programy přeložené pomocí MinGW nemusí být distribuovány se zdrojovýcm kódem, protože MinGW nepotřebuje kompatibilní vrstvu DLL.

MinGW nemůže poskytnout plnohodnotné POSIX API, protože využívá volání Win32-API. Proto s ním není možné kompilovat některé Unixové aplikace, které mohou být kompilovány s Cygwinem. Konkrétně se to týká aplikací, které potřebují funkcionalitu POSIXU jako fork(), mmap(), nebo ioctl()[10] a nebo očekávají běh uvnitř POSIXového prostředí. Aplikace napsané pomocí cross-platform knihoven portovaných do MinGW, jako SDL, wxWidgets, Qt, nebo GTK+ se obvykle kompilují bezproblémově jak na MinGW tak v Cygwinu.

Kombinace MinGW a MSYS poskytuje malé, nezávislé prostředí, které může být načteno z vyjímatelného média (USB flash disk) bez zanechání údajů v registrech nebo souborech v počítači. Protože Cygwin nabízí více funkcionality, je složitější z hlediska instalace a údržby. Cygwin navíc ve své DLL knihovně emulující POSIXovou vrstvu používá nedokumentované funkce Windows. Tím vzniká obava ze stability jak CygWin, tak Windows, a také je důvodem značného odmítání CygWin mnoha vývojáři.

Navíc je možné křížově kompilovat Windows aplikace pomocí MinGW-GCC na POSIX systémech. To znamená, že vývojáři nepotřebují instalaci Windows s MSYS pro kompilaci softwaru, který poběží na Windowsu bez Cygwinu.

Související články[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku MinGW na anglické Wikipedii.

Externí odkazy[editovat | editovat zdroj]