MinGW

Mingw
Originalautor (en) Colin Peters
Entwickler (en) Mingw -Projekt
Erstveröffentlichung 1. Juli 1998; Vor 24 Jahren
Stabile Version
GNU Binutils-2,32-1, Installationsmanager-0,6,3, WSL-5.2.1[1] / 11. Februar 2019; Vor 3 Jahren
Geschrieben in C, C ++
Betriebssystem Microsoft Windows, Unix-artig (Als ein Cross Compiler)
Typ Compiler
Lizenz Public domain (Header), GNU Allgemeine öffentliche Lizenz (Compiler und Toolchain)
Webseite OSDN.Netz/Projekte/mingw

Mingw ("Minimalist GNU für Windows"), früher Mingw32, ist ein freie und Open Source Software-Entwicklung Umgebung zu schaffen Microsoft Windows Anwendungen.

Mingw enthält a Hafen des GNU Compiler -Sammlung (GCC), Gnu binutils für Windows (Assembler, Linker, Archivmanager), eine Reihe frei verteilbarer Windowsspezifikum Header -Dateien und Statische Importbibliotheken die die Verwendung des Windows -API, ein Windows Native Build der GNU -Projekt's GNU -Debuggerund verschiedene Versorgungsunternehmen.

Mingw verlässt sich nicht auf dritte Seite C Laufzeit Dynamische Link Bibliothek (DLL) Dateien und weil die Laufzeitbibliotheken nicht mit dem verteilt sind GNU Allgemeine öffentliche Lizenz (GPL) Es ist nicht erforderlich, die zu verteilen Quellcode Bei den produzierten Programmen, sofern keine GPL -Bibliothek an anderer Stelle im Programm verwendet wird.[2]

Mingw kann entweder auf der nativen Microsoft Windows-Plattform ausgeführt werden, die gekreuzt werden Linux (oder andere UNIX) oder "intervativ" auf Cygwin. Obwohl Programme, die unter Mingw produziert wurden, 32-Bit-ausführbare Produkte sind, können sie sowohl in 32- als auch in 64-Bit-Versionen von Windows verwendet werden.

Die Entwicklung des Mingw -Projekts war gegabelt mit der Schöpfung in den Jahren 2005–2008 eines alternativen Projekts genannt Mingw-w64.

Geschichte

Mingw wurde ursprünglich Mingw32 ("Minimalist GNU für W32") bezeichnet, nachdem die GNU -Konvention als "W32" verkürzt wird.[3][4] Die Zahlen wurden fallen gelassen, um die Implikation zu vermeiden, dass es sich auf die Produktion beschränken würde 32-Bit-Binärdateien. Colin Peters verfasste die erste Veröffentlichung im Jahr 1998, die nur aus einem Cygwin -Port von GCC bestand.[5][6] Jan-Jaap van der Heijden erstellte einen Windows-nativen Port von GCC und fügte hinzu Binutils und machen.[5][6] Mumit Khan übernahm später die Entwicklung und fügte dem Paket mehr Windows-spezifische Funktionen hinzu, einschließlich der Windows-System-Header von Anders Norlander.[5][6] Im Jahr 2000 wurde das Projekt auf verlegt SourceForge um mehr Unterstützung der Gemeinde zu bitten und ihre Entwicklung zu zentralisieren.[5][6]

Mingw wurde für September 2005 als Projekt des Monats bei SourceForge ausgewählt.[6]

MSYs (eine Kontraktion von "minimalem System") wurde als a eingeführt Bourne Shell Befehlszeileninterpreter -System[7] Mit dem Ziel der besseren Interoperabilität mit native Windows -Software.

Nach einer Meinungsverschiedenheit mit SourceForge über die Verwaltung seiner Mailinglisten migrierte Mingw nach einer Meinungsverschiedenheit auf OSDN.[8]

Gabel

Im Jahr 2007 nannte eine Gabel des ursprünglichen Mingw Mingw-w64 erschien, um 64 Bit und neue APIs zu unterstützen. Seitdem hat es weit verbreitete Verwendung und Verteilung gewonnen. MSYS2 ("Minimal System 2") ist eine Softwareverteilung und eine Entwicklungsplattform für Microsoft Windows, basierend Mingw-w64 und Cygwin, das hilft, Code aus dem bereitzustellen Unix Welt unter Windows.[9]

Programmiersprache Unterstützung

Die meisten von GCC unterstützten Sprachen werden auch im Mingw -Port unterstützt. Dazu gehören C, C,, C ++, Ziel c, Ziel-C ++, Forran, und Ada. Die GCC -Laufzeitbibliotheken werden verwendet (libstdc ++ für C ++, libgFortran für FORTRAN usw.).

Mingw Links standardmäßig mit der Windows OS -Komponentenbibliothek Msvcrt, das ist die C -Bibliothek, die Visuell c ++ Version 6.0 verknüpft mit (das ursprüngliche Ziel war CRTDLL), das 1998 veröffentlicht wurde und daher keine Unterstützung für die Unterstützung für C99 Merkmale oder sogar alle C89. Während sich die MSVCRT -Programme zur Verfügung stellt, für die keine zusätzlichen Umverteilung der Laufzeit erforderlich ist, müssen die mangelnden Unterstützung für C99 zu Portierungsproblemen geführt, insbesondere wo printf-Stil -Konvertierungsspezifizierer sind besorgt. Diese Probleme wurden teilweise durch die Implementierung einer C99 -Kompatibilitätsbibliothek gemindert. libmingwexAber die umfangreiche Arbeiten sind alles andere als vollständig und werden möglicherweise nie vollständig verwirklicht.[10] Mingw-w64 hat diese Probleme gelöst und bietet vollständig posix -konforme Printf -Funktionen.

Linkkompatibilität

Binärdateien (ausführbare DLLs), die mit verschiedenen C ++ - Compilern (wie Mingw und Visual Studio) erzeugt werden, sind im Allgemeinen nicht kompatibel. Der zusammengestellte C -Code ist jedoch kompatibel.[11]

Komponenten

Das Mingw -Projekt verwaltet und verteilt eine Reihe verschiedener Kernkomponenten und ergänzender Pakete, einschließlich verschiedener Ports der GNU Toolchain, wie zum Beispiel GCC und Binutils, übersetzt in äquivalente Pakete.[12][13] Diese Dienstprogramme können von der verwendet werden Windows -Befehlszeile oder in ein integriert Ide. Pakete können über die Befehlszeile über Mingw-Get installiert werden.[14]

Mingw unterstützt dynamische Bibliotheken, die nach dem benannt wurden .lib und .dll Konventionen sowie statische Bibliotheken folgen dem lib.a Namenskonvention ist auf Unix- und Unix-ähnlichen Systemen üblich.

Zusätzlich eine Komponente von Mingw als bekannt als als MSYS (Minimales System) Bietet Windows-Ports eines leichten Unix-ähnlichen Hülse Umgebung einschließlich rxvt und eine Auswahl von Posix Werkzeuge ausreichend, um zu aktivieren Autoconf Skripte zum Ausführen,[15] aber es liefert keinen C -Compiler oder a Fallsensitives Dateisystem.[16]

Mingwports Sind Benutzer bei der Mingw -Softwaresammlung beigesteuert. Anstatt diese "Add-Ons" als vorkompilierte Binärpakete bereitzustellen, werden sie in Form von interaktiven geliefert Bourne Shell Skripte, die den Endbenutzer durch das automatische Herunterladen und Patchen des ursprünglichen Quellcodees durch das Herunterladen und Patching anschließend und dann durch das Erstellen und Installieren führen. Benutzer, die eine Anwendung aus einem Mingwport erstellen möchten, müssen zuerst sowohl Mingw als auch MSYS installieren.[17]

Die Implementierung von Windows -System -Headern und statischen Importbibliotheken werden unter a veröffentlicht Zulässige Lizenz,[18] Während die GNU -Ports unter dem bereitgestellt werden GNU Allgemeine öffentliche Lizenz. Binäre Downloads sowohl des vollständigen MSYS -Pakets als auch der einzelnen Mingw -GNU -Dienstprogramme finden Sie auf der Mingw -Website.

Vergleich mit Cygwin

Obwohl sowohl Cygwin als auch Mingw verwendet werden können, um Unix -Software auf Windows zu portieren, haben sie unterschiedliche Ansätze:[19] Cygwin zielt darauf ab, eine vollständige Bereitstellung zu bieten Posix Ebene mit einer vollständigen Implementierung aller wichtigen UNIX -Systemanrufe und -Bibliotheken. Die Kompatibilität wird als höhere Priorität als die Leistung angesehen. Auf der anderen Seite sind Mingws Prioritäten Einfachheit und Leistung. Als solches bietet es nicht sicher Posix APIs, die nicht einfach mit der Windows -API implementiert werden können, z. Gabel(), mmap() und ioctl ().[19] Anwendungen mit a plattformübergreifend Bibliothek, die selbst auf Mingw portiert wurde, wie z. SDL, wxWidgets, Qt, oder Gtk, wird normalerweise in Mingw so leicht kompilieren wie in Cygwin.

Windows -Programme, die mit Cygwin geschrieben wurden, läuft über a kopieren Kompatibilität DLL Dies muss mit dem Programm verteilt werden, sofern nicht statisch verknüpft ist. Wenn dynamisch verknüpft, muss das Programm auch Informationen darüber geben, wo Cygwin -Quelle erhalten werden soll. Mingw benötigt keine KompatibilitätsschichtDa Mingw-basierte Programme mit direkten Aufrufen an Windows-APIs zusammengestellt werden.

Die Kombination von Mingw und MSYs liefert eine kleine, in sich geschlossene Umgebung, die auf abnehmbare Medien geladen werden kann, ohne Einträge in der Registrierung oder Dateien am Computer.

Es ist auch möglich Cross-Compile Windows-Anwendungen mit Mingw-GCC unter POSIX-Systemen. Dies bedeutet, dass Entwickler keine Windows -Installation mit MSYS benötigen, um Software zu kompilieren, die unter Windows mit oder ohne Cygwin ausgeführt wird.

Siehe auch

Verweise

  1. ^ "Paketliste herunterladen". osdn.net.
  2. ^ "(Mingw auf) Mingw". Mingw.org/wiki. 2008-07-07. Archiviert von das Original Am 2013-10-06. Abgerufen 2013-10-16.
  3. ^ "GNU -Codierungsstandards". gnu.org. Kostenlose Software -Stiftung. 27. April 2013. 5.5 Portabilität zwischen Systemtypen. Abgerufen 1. Juli, 2013.
  4. ^ Stallman, Richard (2000-09-18). "Libtool Re: Benennung eines Projekts gnu-win32?". libtool (Mailingliste). Abgerufen 2013-05-21.
  5. ^ a b c d "Geschichte | Mingw". Mingw.org. Archiviert von das Original Am 2012-08-23. Abgerufen 2012-07-09.
  6. ^ a b c d e "(SourceForge) Projekt des Monats". SourceForge.net. 2005-08-31. Abgerufen 2012-07-09.
  7. ^ "(Wiki :) msys". Mingw.org. Archiviert von das Original am 2006-08-28. Abgerufen 2020-04-16. MSYS, eine Kontraktion von "Minimal System", ist ein Bourne Shell Command Line Interpreter -System.
  8. ^ "Ankündigung der Migration zu OSDN.net". Mingw-Benutzer (Mailingliste). 21. Januar 2018.
  9. ^ MSYS2: offizielle Homepage, Code -Repository
  10. ^ "(Mingw und) C99". Mingw.org/wiki. 2010-06-21. Archiviert von das Original Am 2011-05-20. Abgerufen 2011-03-29.
  11. ^ "Interoperabilität von Bibliotheken, die von verschiedenen Compiler -Marken erstellt wurden | Mingw". mingw.org. Archiviert von das Original Am 2010-06-12.
  12. ^ "(Mingw) FAQ". Mingw.org. Archiviert von das Original am 2008-11-21. Abgerufen 2012-07-09.
  13. ^ "Mingw - Minimalist GNU für Windows". SourceForge.net. Abgerufen 2012-07-09.
  14. ^ "Mingw -Befehlszeilungsschnittstelle Installationsprogramm". Archiviert von das Original am 15. Juni 2012. Abgerufen 14. Juni 2012.
  15. ^ "(Wiki :) msys". Mingw.org. Archiviert von das Original Am 2016-02-18. Abgerufen 2016-02-18.
  16. ^ "(Wiki :) msys". Mingw.org. Archiviert von das Original Am 2016-02-18. Abgerufen 2016-02-18. Ein häufiges Missverständnis ist MSYS "Unix on Windows", MSYS selbst enthält weder einen Compiler noch eine C-Bibliothek, [...] und liefert auch keine unix spezifischen Funktionen wie Fallsensitive Dateinamen.
  17. ^ "(Wiki :) Mingwport". Mingw.org. Archiviert von das Original Am 2012-07-23. Abgerufen 2012-07-09.
  18. ^ "(Mingw) Lizenzbegriffe". Mingw.org. Archiviert von das Original am 2009-08-04. Abgerufen 2012-07-09.
  19. ^ a b "(Mingw :) Über Cygwin". Mingw.org. Archiviert von das Original am 2009-08-28. Abgerufen 2012-07-09.

Externe Links