MinGW - MinGW

MinGW
Auteur(s) original(aux) Colin Peters
Développeur(s) Projet MinGW
Première version 1er juillet 1998 ; il y a 22 ans ( 1998-07-01 )
Version stable
GNU BinUtils—2.32-1, Installation Manager—0.6.3, WSL—5.2.1 / 11 février 2019 ; il y a 2 ans ( 2019-02-11 )
Écrit en C , C++
Système opérateur Microsoft Windows , de type Unix (en tant que compilateur croisé )
Taper Compilateur
Licence Domaine public (en-têtes), GNU General Public License (compilateur et chaîne d'outils)
Site Internet osdn .net /projects /mingw / (page du projet, toujours active)
mingw .osdn .io (inactif et cassé ; l'ancien domaine de mingw.org a expiré)

MinGW (« Minimalist GNU for Windows »), anciennement mingw32 , est un environnement de développement logiciel libre et open source permettant de créer des applications Microsoft Windows . Le développement du projet MinGW a été bifurqué avec la création en 2005-2008 d'un projet alternatif appelé Mingw-w64 .

MinGW comprend un port de la GNU Compiler Collection (GCC), GNU Binutils pour Windows ( assembleur , éditeur de liens , gestionnaire d' archives ), un ensemble de Windows spécifique librement distribuables fichiers d' en- tête et les bibliothèques d'importation statiques qui permettent l'utilisation de l' API Windows , Windows version native du projet GNU de débogueur GNU , et les services publics divers.

MinGW ne repose pas sur des fichiers de bibliothèque de liens dynamiques (DLL) d' exécution C tiers , et comme les bibliothèques d'exécution ne sont pas distribuées à l'aide de la licence publique générale GNU (GPL), il n'est pas nécessaire de distribuer le code source avec les programmes produits. , à moins qu'une bibliothèque GPL ne soit utilisée ailleurs dans le programme.

MinGW peut être exécuté soit sur la plate-forme native Microsoft Windows, hébergée sur Linux (ou autre Unix), soit "cross-native" sur Cygwin . Bien que les programmes produits sous MinGW soient des exécutables 32 bits, ils peuvent être utilisés à la fois dans les versions 32 et 64 bits de Windows.

Histoire

MinGW s'appelait à l'origine mingw32 ("Minimalist GNU for W32"), suivant la convention GNU selon laquelle Windows est abrégé en "W32". Les nombres ont été supprimés afin d'éviter l'implication qu'il serait limité à la production de binaires 32 bits . Colin Peters est l'auteur de la version initiale en 1998, consistant uniquement en un port Cygwin de GCC. Jan-Jaap van der Heijden a créé un port natif Windows de GCC et a ajouté binutils et make . Mumit Khan a ensuite pris en charge le développement, ajoutant plus de fonctionnalités spécifiques à Windows au package, y compris les en-têtes système Windows d'Anders Norlander. En 2000, le projet a été transféré sur SourceForge afin de solliciter davantage l'aide de la communauté et de centraliser son développement.

MinGW a été sélectionné comme projet du mois par SourceForge en septembre 2005.

MSYS (contraction de "Minimal System") a été introduit en tant que système d'interpréteur de ligne de commande Bourne shell dans le but d'une meilleure interopérabilité avec le logiciel Windows natif.

En 2018, suite à un désaccord avec SourceForge concernant l'administration de ses listes de diffusion, MinGW a migré vers OSDN .

Fourchette

En 2007, un fork du MinGW original appelé Mingw-w64 est apparu afin de prendre en charge le 64 bits et les nouvelles API. Il a depuis lors gagné une utilisation et une distribution généralisées. MSYS2 ("minimal system 2") est une distribution de logiciels et une plate-forme de développement pour Microsoft Windows , basée sur Mingw-w64 et Cygwin , qui permet de déployer du code du monde Unix sur Windows.

Prise en charge du langage de programmation

La plupart des langues prises en charge par GCC sont également prises en charge sur le port MinGW. Ceux-ci incluent C, C ++ , Objective-C , Objective-C ++, Fortran et Ada . Les bibliothèques d'exécution GCC sont utilisées (libstdc++ pour C++, libgfortran pour Fortran, etc.).

MinGW est lié par défaut à la bibliothèque de composants du système d'exploitation Windows MSVCRT , qui est la bibliothèque C à laquelle Visual C++ version 6.0 est liée (la cible initiale était CRTDLL), qui a été publiée en 1998 et n'inclut donc pas la prise en charge des fonctionnalités C99 , ni même toutes de C89 . Bien que le ciblage de MSVCRT génère des programmes qui ne nécessitent pas l'installation de redistribuables d'exécution supplémentaires, le manque de prise en charge de C99 a causé des problèmes de portage, en particulier en ce qui concerne les spécificateurs de conversion de style printf . Ces problèmes ont été partiellement atténués par la mise en œuvre d'une bibliothèque de compatibilité C99, libmingwex , mais le travail considérable requis est loin d'être terminé et pourrait ne jamais être entièrement réalisé. Mingw-w64 a résolu ces problèmes et fournit une fonctionnalité printf entièrement compatible POSIX.

Compatibilité des liens

Les binaires (exécutables ou DLL) générés avec différents compilateurs C++ (comme MinGW et Visual Studio) ne sont généralement pas compatibles avec les liens. Cependant, le code C compilé est compatible avec les liens.

Composants

Le projet MinGW maintient et distribue un certain nombre de composants de base et de packages supplémentaires, y compris divers ports de la chaîne d'outils GNU , tels que GCC et binutils , traduits en packages équivalents. Ces utilitaires peuvent être utilisés depuis la ligne de commande Windows ou intégrés dans un IDE . Les packages peuvent être installés à l'aide de la ligne de commande via mingw-get.

MinGW prend en charge les bibliothèques dynamiques nommées selon les conventions <name>.libet <name>.dll, ainsi que les bibliothèques statiques suivant la lib<name>.aconvention de nommage commune aux systèmes Unix et de type Unix.

De plus, un composant de MinGW connu sous le nom de MSYS ( système minimal ) fournit des ports Windows d'un environnement shell léger de type Unix comprenant rxvt et une sélection d' outils POSIX suffisante pour permettre l' exécution de scripts autoconf , mais il ne fournit pas de compilateur C ou un système de fichiers sensible à la casse .

Les mingwPORT sont des ajouts apportés par les utilisateurs à la collection de logiciels MinGW. Plutôt que de fournir ces "add-ons" sous forme de packages binaires précompilés, ils sont fournis sous la forme de scripts shell Bourne interactifs , qui guident l'utilisateur final tout au long du processus de téléchargement et de correction automatique du code source original, puis de sa construction et de son installation. Les utilisateurs qui souhaitent créer une application à partir d'un mingwPORT doivent d'abord installer MinGW et MSYS.

L'implémentation des en-têtes système Windows et des bibliothèques d'importation statiques est publiée sous une licence permissive , tandis que les ports GNU sont fournis sous la licence publique générale GNU . Des téléchargements binaires du package MSYS complet et des utilitaires MinGW GNU individuels sont disponibles sur le site MinGW.

Comparaison avec Cygwin

Bien que Cygwin et MinGW puissent être utilisés pour porter des logiciels Unix sur Windows, ils ont des approches différentes : Cygwin vise à fournir une couche POSIX complète comprenant une implémentation complète de tous les principaux appels système et bibliothèques Unix. La compatibilité est considérée comme une priorité plus élevée que les performances. D'autre part, les priorités de MinGW sont la simplicité et la performance. En tant que tel, il ne fournit pas certaines API POSIX qui ne peuvent pas être facilement implémentées à l'aide de l'API Windows, telles que fork(), mmap()et ioctl(). Les applications écrites à l'aide d'une bibliothèque multiplateforme qui a elle-même été portée sur MinGW, telle que SDL , wxWidgets , Qt ou GTK , seront généralement compilées aussi facilement dans MinGW que dans Cygwin.

Les programmes Windows écrits avec Cygwin s'exécutent sur une DLL de compatibilité avec copyleft qui doit être distribuée avec le programme, ainsi que le code source du programme. MinGW ne nécessite pas de couche de compatibilité , car les programmes basés sur MinGW sont compilés avec des appels directs aux API Windows.

La combinaison de MinGW et de MSYS fournit un petit environnement autonome qui peut être chargé sur un support amovible sans laisser d'entrées dans le registre ou de fichiers sur l'ordinateur.

Il est également possible de croiser des applications Windows avec MinGW-GCC sous les systèmes POSIX. Cela signifie que les développeurs n'ont pas besoin d'une installation Windows avec MSYS pour compiler des logiciels qui fonctionneront sous Windows avec ou sans Cygwin.

Voir également


Les références

Liens externes