Mingw-w64 - Mingw-w64

MinGW-w64
Pierwotny autor (autorzy) Oprogramowanie OneVision
Deweloper(zy) Kai Tietz, Jonathan Yong, różni współtwórcy GNU
Pierwsze wydanie 2005 ; 16 lat temu ( 2005 )
Wersja stabilna
9.0.0 / 22 maja 2021 ; 3 miesiące temu ( 2021-05-22 )
Napisane w C , C++
System operacyjny Microsoft Windows , Linux , macOS
Rodzaj Kompilator
Licencja Domena publiczna (nagłówki), Powszechna Licencja Publiczna GNU (kompilator i toolchain), Licencja Publiczna Zope
Strona internetowa mingw-w64 .org

Mingw-w64 to bezpłatne środowisko programistyczne typu open source do tworzenia aplikacji Microsoft Windows PE . Został rozwidlony w latach 2005-2008 od MinGW ( Minimalistyczne GNU dla Windows ).

MinGW-W64 posiada 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 , Windows rodzimy kompilacji projektu GNU „s GNU Debugger i różne narzędzia.

Mingw-w64 może być uruchamiany na macierzystej platformie Microsoft Windows, hostowany w systemie Linux (lub innym systemie Unix) lub "cross-native" na MSYS2 lub Cygwin . Mingw-w64 może generować 32-bitowe i 64-bitowe pliki wykonywalne dla x86 pod nazwami docelowymi i686-w64-mingw32i x86_64-w64-mingw32.

Historia

W 2005 r. Mingw-w64 został stworzony przez OneVision Software zgodnie z zasadami projektowania pomieszczeń czystych , ponieważ pierwotny projekt MinGW nie był szybki w aktualizowaniu bazy kodu, w tym o kilka kluczowych nowych interfejsów API i bardzo potrzebną obsługę 64-bitową. W 2008 roku OneVision przekazało kod Kai Tietz, jednemu z głównych programistów, pod warunkiem, że pozostanie open source. Po raz pierwszy został zgłoszony do pierwotnego projektu MinGW, ale odmówiono go pod zarzutem wykorzystania informacji niepublicznych lub zastrzeżonych. Z wielu powodów główny deweloper i współtwórca projektu MinGW-w64, Kai Tietz, postanowił nie podejmować dalszej współpracy z MinGW.

MinGW-w64 zapewnia pełniejszą implementację Win32 API, w tym:

Ponadto, projekt Mingw-W64 utrzymuje winpthreads, z biblioteki owijki podobny do Pthreads Win32, z główną różnicą, że umożliwia GCC używać jako biblioteka nici powodując funkcjonalnej bibliotek C ++ 11 gwintu <thread>, <future>i <mutex>.

MSYS2

MSYS2 ("minimalny system 2") to dystrybucja oprogramowania i platforma programistyczna dla Microsoft Windows , oparta na Mingw-w64 i Cygwin , która pomaga wdrażać kod ze świata Unix na Windows. Odgrywa tę samą rolę, co stary MSYS w MinGW.

MSYS2 podziela ten cel, jakim jest wprowadzenie kodu Uniksa na maszyny Windows z kilkoma innymi projektami, w szczególności Cygwin i Windows Subsystem for Linux (WSL). WSL pozwala na uruchamianie plików binarnych Linux ELF w systemie Windows, z ograniczoną obsługą wywołań jądra i znacznymi ograniczeniami w aplikacjach graficznych. Cygwin dostarcza pełne środowisko POSIX (jako Windows DLL ), w którym aplikacje, skompilowane jako Windows EXE, działają tak jak pod Uniksem.

Zamiast zapewniać pełne środowisko, tak jak robi to Cygwin, MSYS2 sam pełni rolę platformy programistycznej i wdrożeniowej.

  • Istnieje główne środowisko MSYS2 (podobne i faktycznie wywodzące się z kodu emulacji Cygwina) z menedżerem pakietów i standardowym narzędziem systemowym Unix. W ten sposób, podczas zarządzania samym MSYS2, standardowe narzędzia uniksowe mogą być używane bez modyfikacji przy użyciu emulowanego środowiska. Możliwe jest również zainstalowanie narzędzi do budowania w środowisku emulowanym MSYS2 w przypadku, gdy użytkownik chce zbudować oprogramowanie, które zależy od warstwy emulacji POSIX zamiast natywnego API.
  • Ponadto udostępniane są cztery środowiska zawierające natywne kompilatory, narzędzia do kompilacji i biblioteki, które można bezpośrednio wykorzystać do tworzenia natywnych 32-bitowych lub 64-bitowych programów dla systemu Windows. Ostateczne programy zbudowane z dwoma natywnymi środowiskami nie używają żadnego rodzaju emulacji i mogą działać lub być rozpowszechniane jak natywne programy Windows. Środowiska to MINGW64 i MINGW32 (oryginalne środowiska MinGW-w64 używające gcc, msvcrt i libstdc++), UCRT64 (adaptacja MINGW64 do ucrt) i CLANG64 (adaptacja UCRT64 do clang i libc++). Chociaż Cygwin dostarcza również kompilatory i biblioteki MinGW-w64, zestaw dostępnych bibliotek jest mniejszy i nie można nimi tak łatwo zarządzać, ponieważ nie są umieszczane w oddzielnych prefiksach.

Główne środowisko MSYS2 zapewnia menedżera pakietów ( Pacman z Arch Linux ), powłokę bash i inne programy uniksowe . Wykorzystuje bibliotekę uruchomieniową msys-2.0.dll (~20 MB), która wywodzi się z biblioteki Cygwin cygwin1.dll i jest regularnie aktualizowana, aby śledzić rozwój Cygwin. Jest pomyślany jako środowisko programistyczne, którym programiści mogą zarządzać (za pomocą pacmana) i uruchamiać swoje narzędzia. Funkcje uznane za niepotrzebne do rozwoju są usuwane.

Podobnie jak w przypadku Cygwin, MSYS2 obsługuje translację ścieżki dla oprogramowania innego niż MSYS2 uruchamianego z niego. Na przykład można użyć polecenia notepad++ /c/Users/John/file.txtdo uruchomienia edytora, który otworzy plik ze ścieżką Windows C:\Users\John\file.txt.

MSYS2 i jego środowisko bash są używane przez Git i GNU Octave w ich oficjalnej dystrybucji Windows.

Kompilator

Większość języków obsługiwanych przez GCC jest również obsługiwana przez port Mingw-w64. 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.). Opakowanie z llvm brzękiem jest do mingw-W64 jest również przez MSYS2. Obsługuje ARM dla Windows ( aarch64-w64-mingw32i armv7-w64-mingw32).

Pliki binarne (pliki wykonywalne lub biblioteki DLL) generowane za pomocą różnych kompilatorów C++ (takich jak Mingw-w64 GCC i Visual Studio) nie są ogólnie kompatybilne z łączami ze względu na użycie różnych ABI i schematów zmiany nazw spowodowanych różnicami w środowiskach uruchomieniowych C++. Jednak skompilowany kod C jest zgodny z łączami. Wyjątkiem jest Clang, ponieważ obsługuje on głównie C++ ABI MSVC w systemie Windows.

Dokumentacja binutils zawiera aktualne informacje na temat obsługi różnych formatów specyficznych dla systemu Windows i specjalnych narzędzi do tego celu.

Bibliografia

Zewnętrzne linki