J'utilise actuellement Windows 8.1 et cherchais à installer GCC. J'ai découvert que les moyens de le faire sont via MinGW et CygWin (les plus populaires). Maintenant, je suis venu sur le sous-système Windows pour Linux (WSL) et Bash offert sur Windows dans Windows 10.
Question 1. s'il est possible d'avoir GCC installé via le Bash dans Windows 10, et cela fonctionnera-t-il comme il le fait sur une distribution Linux. Disons que vous avez un fichier "helloworld.c", et si je le fais,
> gcc helloworld.c
$ ./a
dans le bash, j'obtiendrais la sortie (supposons que le contenu de 'helloworld.c' soit simple - une déclaration cout
.)
Question 2. S'il est possible alors, laquelle des méthodes est préférable d'utiliser GCC sous Windows. Autrement dit, a) MinGW ou CygWin b) Bash sous Linux sur Windows. Parce que sur la base de ce que j'ai compris sur ce que j'ai lu, CygWin et MinGW provoquent certaines dépendances sur les programmes développés sur eux.
Question 3. Si vous avez lu jusqu'ici, veuillez combler mon manque de compréhension sur CygWin et MinGW. C'est-à-dire que si je l'utilise uniquement pour compiler et exécuter des morceaux de code et non pour le développement d'applications, peu importe lequel d'entre eux j'utilise, ai-je raison? Parce que le code (écrit en C ou FORTRAN) compilera et exécutera le même quel que soit le système, ai-je raison?
Le contexte. Je suis un étudiant travaillant sur les calculs numériques (Computational Fluid Dynamics) et mon travail principal est de développer et d'exécuter des codes CFD dans FORTRAN. Ce que je veux faire, c'est travailler sur le code de calcul (pour lequel nous utilisons principalement FORTRAN) sur mon ordinateur portable qui fonctionne sous Windows. Et je ne cherche pas à développer des applications ou des logiciels pour Windows ou Linux pour le moment. Mais j'aimerais quand même savoir comment les choses fonctionnent et quelle est la meilleure option. Veuillez expliquer en détail. Je vous remercie.
Pour répondre à votre première question, oui, vous pouvez faire cette compilation sous WSL.
Pour répondre à vos autres questions, regardons MinGW. Voici ce que dit l'article Wikipedia de MinGW:
MinGW a été dérivé de la version 1.3.3 de Cygwin. [5] Bien que Cygwin et MinGW puissent être utilisés pour porter des logiciels Unix sur Windows, ils ont des approches différentes: [16] 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'un autre côté, 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 (). [16] Les applications écrites à l'aide d'une bibliothèque multiplateforme qui a elle-même été portée sur MinGW, comme SDL, wxWidgets, Qt ou GTK +, se compilent généralement aussi facilement dans MinGW que dans Cygwin.
Les programmes Windows écrits avec Cygwin s'exécutent sur une compatibilité copyleftée DLL qui doit être distribuée avec le programme, avec 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.
( https://en.wikipedia.org/wiki/MinGW )
Voici ce que dit la page Web MinGW ( http://www.mingw.org ):
MinGW, une contraction de "Minimalist GNU for Windows", est un environnement de développement minimaliste pour les applications natives de Microsoft Windows.
MinGW fournit un ensemble complet d'outils de programmation Open Source qui convient au développement d'applications natives MS-Windows et qui ne dépendent d'aucune DLL C-Runtime tierce. (Il dépend d'un certain nombre de DLL fournies par Microsoft elles-mêmes, en tant que composants du système d'exploitation; le plus notable d'entre elles est MSVCRT.DLL, la bibliothèque d'exécution Microsoft C. En outre, les applications filetées doivent être livrées avec une DLL de prise en charge de thread librement distribuable, fourni dans le cadre de MinGW lui-même).
Les compilateurs MinGW permettent d'accéder aux fonctionnalités de l'environnement d'exécution Microsoft C et de certains environnements d'exécution spécifiques à la langue. MinGW, étant minimaliste, ne tente pas et ne tentera jamais de fournir un environnement d'exécution POSIX pour le déploiement d'applications POSIX sur MS-Windows. Si vous souhaitez déployer une application POSIX sur cette plate-forme, veuillez plutôt envisager Cygwin.
Je connais WSL et Cygwin plus que MinGW. D'après ce que je sais, MinGW est plus destiné à produire des binaires Windows raisonnablement portables et hautes performances, tandis que Cygwin est plus destiné aux utilisateurs Unix (ou à ceux qui souhaitent porter des applications écrites pour Unix/POSIX) qui veulent un environnement de type Unix sous Fenêtres avec toutes les garnitures. Comme vous l'avez indiqué, les programmes Cygwin étaient au moins moins facilement distribuables à ceux qui n'ont pas installé Cygwin (pour des raisons de licence, mais voir le lien ci-dessous). Les programmes MinGW s'exécutent en tant que programmes Windows natifs à l'aide de bibliothèques natives Windows non documentées. Les binaires WSL ne s'exécutent pas sous Windows par eux-mêmes; ils ne fonctionnent que dans l'environnement WSL (ou éventuellement sur des systèmes Linux natifs). WSL mappe les appels du noyau Linux aux appels du noyau Windows, tandis que Cygwin implémente les appels de bibliothèque Unix/Posix. WSL s'appuie sur une véritable distribution Linux pour fournir son environnement, tandis que Cygwin s'appuie sur son propre environnement. (WSL a un avantage en ce qu'il exécutera les binaires existants sans recompilation.) Je ne pense pas que cela soit trop important pour vous, car vous ne prévoyez pas de distribuer vos binaires. Vous voulez des performances élevées. Selon Wikipedia, MinGW est plus performant que Cygwin, mais c'est aussi 32 bits qui peut être un problème avec vos applications. Il existe un environnement 64 bits similaire à MinGW mais c'est un projet différent.
Une considération importante est de savoir si vous voulez écrire du code Windows ou du code Unix/Linux/POSIX. MinGW est destiné au développement d'applications Windows à l'aide des API Windows (bien que vous puissiez intégrer une prise en charge POSIX limitée); WSL et Cygwin sont destinés au développement d'applications Unix/Linux/POSIX. Cela est important à des fins de portabilité. Mais si vous développez le type de programmes que je pense que vous êtes, presque tous les calculs simples et très peu d'E/S sophistiquées, cela peut se résumer à vos préférences ou à votre convenance. Si vous pouvez trouver un petit programme représentatif qui prend beaucoup de temps et essayer de l'exécuter sous chaque environnement, vous pouvez trouver celui qui a les meilleures performances. Cela dépendra, je pense, de votre propre combinaison d'opérations.