MinGW - MinGW
Pierwotny autor (autorzy) | Colin Peters |
---|---|
Deweloper(zy) | Projekt MinGW |
Pierwsze wydanie | 1 lipca 1998 |
Wersja stabilna | GNU BinUtils — 2.32-1, Menedżer instalacji — 0.6.3, WSL — 5.2.1 / 11 lutego 2019
|
Napisane w | C , C ++ |
System operacyjny | Microsoft Windows , uniksowy (jako kompilator krzyżowy ) |
Rodzaj | Kompilator |
Licencja | Domena publiczna (nagłówki), Powszechna Licencja Publiczna GNU (kompilator i toolchain) |
Stronie internetowej |
osdn mingw |
MinGW ("Minimalistyczne GNU dla Windows"), dawniej mingw32 , to wolne i otwarte środowisko programistyczne do tworzenia aplikacji Microsoft Windows . Rozwój projektu MinGW został rozwidlone z utworzeniem w latach 2005-2008 alternatywnego projektu o nazwie Mingw-W64 .
MinGW obejmuje portu z GNU Compiler Collection (GCC), GNU BINUTILS dla Windows ( asembler , linker , Archive Manager ), zestaw swobodnemu rozpowszechnianiu określonych okien plików nagłówkowych i statycznych bibliotek importowych , które umożliwiają korzystanie z Windows API , w systemie Windows rodzimy kompilacji projektu GNU „s GNU Debugger i różne narzędzia.
MinGW nie opiera się na plikach biblioteki dołączanej dynamicznie (DLL) środowiska wykonawczego C innych firm , a ponieważ biblioteki wykonawcze nie są rozpowszechniane przy użyciu licencji GNU General Public License (GPL), nie jest konieczne rozpowszechnianie kodu źródłowego z produkowanymi programami , chyba że w innym miejscu programu jest używana biblioteka GPL.
MinGW może być uruchomiony na natywnej platformie Microsoft Windows, hostowany na Linuksie (lub innym Unixie) lub "cross-native" na Cygwin . Chociaż programy tworzone w ramach MinGW są 32-bitowymi plikami wykonywalnymi, mogą być używane zarówno w 32, jak i 64-bitowych wersjach systemu Windows.
Historia
MinGW był pierwotnie nazywany mingw32 („Minimalistyczne GNU dla W32”), zgodnie z konwencją GNU, według której Windows jest skrócony do „W32”. Liczby zostały usunięte, aby uniknąć implikacji, że będzie ograniczone do tworzenia 32-bitowych plików binarnych . Colin Peters był autorem pierwszego wydania w 1998 roku, składającego się tylko z portu Cygwin GCC. Jan-Jaap van der Heijden stworzył natywny dla Windows port GCC i dodał binutils oraz make . Mumit Khan przejął później rozwój, dodając do pakietu więcej funkcji specyficznych dla systemu Windows, w tym nagłówki systemu Windows autorstwa Andersa Norlandera. W 2000 roku projekt został przeniesiony do SourceForge , aby uzyskać większą pomoc od społeczności i scentralizować jego rozwój.
MinGW został wybrany Projektem Miesiąca na SourceForge we wrześniu 2005 roku.
MSYS (skrót od „Minimal System”) został wprowadzony jako system interpretera wiersza poleceń powłoki Bourne w celu lepszej współpracy z rodzimym oprogramowaniem Windows.
W 2018 roku, po sporze z SourceForge dotyczącym administrowania jego listami mailingowymi, MinGW przeszedł na OSDN .
Widelec
W 2007 roku pojawił się rozwidlenie oryginalnego MinGW o nazwie Mingw-w64 , aby zapewnić obsługę 64 bitów i nowych interfejsów API. Od tego czasu zyskał szerokie zastosowanie i dystrybucję. MSYS2 („minimal system 2”) to dystrybucja oprogramowania i platforma programistyczna dla Microsoft Windows , oparta na Mingw-w64 i Cygwin , która pomaga we wdrażaniu kodu ze świata Uniksa w systemie Windows.
Obsługa języka programowania
Większość języków obsługiwanych przez GCC jest również obsługiwana przez port MinGW. Należą do nich C, C++ , Objective-C , Objective-C++, Fortran i Ada . Używane są biblioteki uruchomieniowe GCC (libstdc++ dla C++, libgfortran dla Fortran itp.).
MinGW domyślnie łączy się z biblioteką komponentów systemu operacyjnego Windows MSVCRT , która jest biblioteką C, z którą powiązano Visual C++ w wersji 6.0 (początkowym celem był CRTDLL), która została wydana w 1998 roku i dlatego nie obejmuje obsługi funkcji C99 , a nawet wszystkich z C89 . Podczas gdy kierowanie na MSVCRT daje programy, które nie wymagają instalowania dodatkowych redystrybucyjnych komponentów wykonawczych, brak obsługi C99 spowodował problemy z przenoszeniem, szczególnie w przypadku specyfikatorów konwersji w stylu printf . Problemy te zostały częściowo złagodzone przez implementację biblioteki kompatybilności z C99, libmingwex , ale wymagana rozległa praca jest daleka od ukończenia i może nigdy nie zostać w pełni zrealizowana. Mingw-w64 rozwiązał te problemy i zapewnia w pełni zgodną z POSIX funkcjonalność printf.
Zgodność łącza Link
Pliki binarne (pliki wykonywalne lub DLL) generowane za pomocą różnych kompilatorów C++ (takich jak MinGW i Visual Studio) nie są ogólnie kompatybilne z łączami. Jednak skompilowany kod C jest zgodny z łączami.
składniki
Projekt MinGW utrzymuje i dystrybuuje wiele różnych podstawowych komponentów i pakietów uzupełniających, w tym różne porty łańcucha narzędzi GNU , takie jak GCC i binutils , przetłumaczone na równoważne pakiety. Te narzędzia mogą być używane z wiersza poleceń Windows lub zintegrowane ze środowiskiem IDE . Pakiety można instalować za pomocą wiersza poleceń poprzez mingw-get.
MinGW obsługuje biblioteki dynamiczne nazwane zgodnie z konwencją <name>.lib
i <name>.dll
, a także biblioteki statyczne zgodne z lib<name>.a
konwencją nazewnictwa powszechną w systemach uniksowych i uniksopodobnych.
Ponadto komponent MinGW znany jako MSYS ( minimalny system ) zapewnia porty Windows lekkiego środowiska powłoki uniksowego, w tym rxvt i wybór narzędzi POSIX wystarczających do uruchomienia skryptów autoconf , ale nie zapewnia kompilatora C ani system plików rozróżniana .
mingwPORTs są dodanymi przez użytkowników dodatkami do kolekcji oprogramowania MinGW. Zamiast dostarczać te "dodatki" jako prekompilowane pakiety binarne, są one dostarczane w formie interaktywnych skryptów powłoki Bourne'a , które prowadzą użytkownika końcowego przez proces automatycznego pobierania i łatania oryginalnego kodu źródłowego, a następnie budowania go i instalowania. Użytkownicy, którzy chcą zbudować dowolną aplikację z mingwPORT, muszą najpierw zainstalować zarówno MinGW, jak i MSYS.
Implementacja nagłówków systemu Windows i statycznych bibliotek importu jest udostępniana na licencji permisywnej , podczas gdy porty GNU są udostępniane na licencji GNU General Public License . Binarne pliki do pobrania zarówno kompletnego pakietu MSYS, jak i poszczególnych narzędzi MinGW GNU są dostępne na stronie MinGW.
Porównanie z Cygwinem
Chociaż zarówno Cygwin, jak i MinGW mogą być używane do przenoszenia oprogramowania uniksowego do systemu Windows, mają różne podejścia: Cygwin ma na celu dostarczenie kompletnej warstwy POSIX zawierającej pełną implementację wszystkich głównych wywołań systemowych i bibliotek Unixa. Zgodność jest uważana za wyższy priorytet niż wydajność. Z drugiej strony priorytetami MinGW są prostota i wydajność. W związku z tym nie zapewnia pewnych interfejsów API POSIX, których nie można łatwo zaimplementować za pomocą interfejsu API systemu Windows, takich jak fork()
, mmap()
i ioctl()
. Aplikacje napisane przy użyciu wieloplatformowej biblioteki, która sama została przeniesiona do MinGW, takiej jak SDL , wxWidgets , Qt lub GTK , zwykle kompilują się tak łatwo w MinGW, jak w Cygwin.
Programy Windows napisane z Cygwin uruchomić na szczycie copyleft kompatybilności DLL , który musi być rozpowszechniany z programem, wraz z kodem źródłowym programu. MinGW nie wymaga warstwy kompatybilności , ponieważ programy oparte na MinGW są kompilowane z bezpośrednimi wywołaniami API Windows.
Połączenie MinGW i MSYS zapewnia małe, samodzielne środowisko, które można załadować na nośniki wymienne bez pozostawiania wpisów w rejestrze lub plików na komputerze.
Możliwe jest również skompilowanie aplikacji Windows z MinGW-GCC w systemach POSIX. Oznacza to, że programiści nie potrzebują instalacji systemu Windows z MSYS, aby skompilować oprogramowanie, które będzie działać w systemie Windows z lub bez Cygwin.
Zobacz też