MinGW - MinGW

MinGW
Pierwotny autor (autorzy) Colin Peters
Deweloper(zy) Projekt MinGW
Pierwsze wydanie 1 lipca 1998 ; 22 lata temu ( 1998-07-01 )
Wersja stabilna
GNU BinUtils — 2.32-1, Menedżer instalacji — 0.6.3, WSL — 5.2.1 / 11 lutego 2019 ; 2 lata temu ( 11.02.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 .net /projects /mingw / (strona projektu, nadal aktywna)
mingw .osdn .io (nieaktywna i zepsuta; poprzednia domena mingw.org wygasła)

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>.libi <name>.dll, a także biblioteki statyczne zgodne z lib<name>.akonwencją 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 .

mingwPORTsdodanymi 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ż


Bibliografia

Linki zewnętrzne