web-dev-qa-db-fra.com

Une explication simple de ce qu'est MinGW

Je suis un passionné Python utilisateur et il semble que j'exige que MinGW soit installé sur ma machine Windows pour compiler certaines bibliothèques. Je suis un peu confus à propos de MinGW et GCC. Voici ma question ( d'un vrai point de vue factice):

Donc Python est un langage à la fois interprété et compilé. Il existe des implémentations Linux et Windows de Python que l'on installe simplement et utilise le binaire pour exécuter son code). Ils sont livrés avec un tas de bibliothèques intégrées que vous pouvez utiliser. C'est la même chose avec Ruby d'après ce que j'ai lu.

Maintenant, j'ai fait un tout petit peu de C et je sais que l'on a un pour le compiler. Il a ses bibliothèques intégrées qui semblent s'appeler des fichiers d'en-tête que vous pouvez utiliser. Maintenant, à l'époque de la journée d'école, C, écrivait du code dans un vi IDE appelé Turbo-C, puis appuyez sur F9 pour le compiler. C'est à peu près là que mon éducation C se termine.

Qu'est-ce que MinGW et qu'est-ce que GCC? J'ai principalement travaillé sur des systèmes Windows et j'ai même récemment commencé à utiliser Cygwin. N'est-ce pas la même chose?

Une explication simple frappant ces zones serait utile.

(Je m'excuse si ce message semble stupide/stupide. Je pensais que je demanderais ici. Ignorer ces bits de base n'a jamais fait de quelqu'un un meilleur programmeur.)

Merci tout le monde.

40
Mridang Agarwalla

MinGW est une chaîne d'outils GCC complète (comprenant une demi-douzaine de frontends, tels que C, C++, Ada, Go et ainsi de suite) pour la plate-forme Windows qui compile et relie au composant du système d'exploitation Windows C Runtime Library dans msvcrt.dll. Il essaie plutôt d'être minimal (d'où le nom).

Cela signifie, à part Cygwin, MinGW ne fait pas tenter d'offrir une couche POSIX complète au-dessus de Windows, mais d'un autre côté, cela ne vous oblige pas à établir un lien avec une bibliothèque de compatibilité spéciale.
Il a donc également ne pas avoir des implications de licence GPL pour les programmes que vous écrivez (exception notable: profilage des bibliothèques, mais vous ne les distribuerez pas normalement de sorte que cela n'a pas d'importance).

Le nouveau MinGW-w64 est livré avec une liaison API Windows à 99% complète (hors ATL et autres), y compris la prise en charge x64 et les implémentations expérimentales ARM. Vous pouvez parfois trouver une constante exotique indéfinie, mais pour quoi 99% des gens utilisent 99% du temps, cela fonctionne parfaitement bien.

Vous pouvez également utiliser la plus grande partie de ce qui est dans POSIX, tant qu'il est implémenté sous une forme sous Windows. La seule chose POSIX majeure qui ne fonctionne pas avec MinGW est fork, simplement parce qu'il n'y a rien de tel sous Windows (Cygwin a beaucoup de mal à l'implémenter).
Il y a quelques autres petites choses, mais dans l'ensemble, la plupart des choses fonctionnent de toute façon.

Donc, dans une phrase très très simplifiée: MinGW (-w64) est un "truc de compilateur sans fioritures" qui vous permet d'écrire des exécutables binaires natifs pour Windows, non seulement en C et C++, mais aussi dans d'autres langages.

27
Damon

Pour compiler le programme C, vous avez besoin d'un implémentation C pour votre ordinateur spécifique.

Les implémentations C se composent, fondamentalement, d'un compilateur (son préprocesseur et ses en-têtes) et d'une bibliothèque (le code exécutable prêt à l'emploi).

Sur un ordinateur avec Windows installé, la bibliothèque qui contient le code exécutable le plus prêt à l'emploi n'est pas compatible avec le compilateur gcc ... donc pour utiliser ce compilateur sous Windows, vous avez besoin d'une bibliothèque différente: c'est là que MinGW entre dans. MinGW fournit, entre autres, la ou les bibliothèques nécessaires à la réalisation d'une implémentation C avec gcc.


La bibliothèque Windows et MSVC forment ensemble une implémentation différente.

13
pmg

MinGW est une implémentation de la plupart des utilitaires de construction GNU, comme gcc et make sur windows, tandis que gcc n'est que le compilateur. Cygwin est un package beaucoup plus grand et sophistiqué, qui installe beaucoup plus que MinGW.

4
Fran Borcic

MinGW est une suite d'outils de développement qui contient GCC (entre autres), et GCC est un compilateur C dans cette suite.

3
MVS

La seule raison de l'existence de MinGW est de fournir un environnement de type linux aux développeurs qui ne sont pas capables d'utiliser des outils Windows natifs. Il est inférieur à presque tous égards aux chaînes d'outils Microsoft sur les plates-formes Win32/Win64, MAIS il fournit un environnement où le développeur linux n'a pas à apprendre quoi que ce soit de nouveau ET il/elle peut compiler du code linux presque sans modifications. C'est une approche discutable, mais beaucoup de gens trouvent que la commodité est plus importante que d'autres aspects du développement. Cela n'a rien à voir avec C ou C++ comme cela a été indiqué dans les réponses précédentes, il a tout à voir avec l'environnement souhaité par le développeur. L'argument à propos de GNU sur les fenêtres et sa nessessety, n'est que cela - un argument

GCC - compilateur unix/linux, MinGW - approximation de GCC sur l'environnement Windows, compilateur Microsoft et compilateur Intel - plus ou moins comme les noms le suggèrent (les deux produisent des programmes bien meilleurs sur Windows que MinGW, btw)

1
Real Name