GNU/Linux >> Tutoriels Linux >  >> Linux

Différence entre GNUWin32 et cygwin

Cygwin est une bibliothèque qui s'efforce de rendre les programmes UNIX capables de se compiler et de s'exécuter sur les systèmes Windows avec des modifications minimes ou nulles, et un ensemble complet d'outils et d'applications UNIX packagés compilés avec cette bibliothèque. C'est presque un wrapper complet autour de Windows. Il comprend un serveur X et un grand nombre de programmes que vous pouvez vous attendre à trouver dans une distribution Linux. Il est idéal pour les personnes qui souhaitent apprendre ou utiliser la ligne de commande UNIX sous Windows.

MSYS est principalement un portage des outils UNIX nécessaires pour construire des packages de style GNU (avec un configure etc) sur les systèmes Windows avec le compilateur MinGW. Il utilise une variante de la bibliothèque Cygwin modifiée pour sacrifier une certaine compatibilité pour l'efficacité, et est plus compatible avec Windows.

GnuWin32 est simplement un portage de certains des outils GNU vers Windows. Comme MSYS, il utilise msvcrt.dll , ainsi qu'une bibliothèque supplémentaire pour fournir certaines fonctions de compatibilité UNIX. Son objectif principal semble être de permettre aux programmes Windows et aux fichiers batch d'utiliser directement certains programmes et bibliothèques GNU.

Pour la plupart, ils fournissent tous des programmes UNIX sous Windows, mais il existe de nombreuses différences subtiles, notamment :

  • Intention. Cygwin est destiné aux personnes qui souhaitent utiliser UNIX sur leur système d'exploitation Windows. MSYS est destiné aux personnes qui souhaitent créer des programmes Windows à l'aide des outils de génération GNU/UNIX. GnuWin32 est un portage de programmes et de bibliothèques GNU individuels vers Windows.
  • Fichiers texte, en particulier les fins de ligne. Cygwin vous permet d'utiliser CR/LF ou LF. MSYS attend des terminaisons de ligne LF. Les programmes GnuWin32 attendent des fins de ligne CR/LF.
  • Programmes fournis. En particulier, Cygwin a beaucoup plus de packages et GnuWin32 ne fournit aucun shell.

Quant à git, il est disponible avec Cygwin - cette version peut être utilisée dans un répertoire Windows (accessible sous /cygdrive ). Aussi, comme mentionné, il y a msysgit.


Michael Slade a raison. Je voudrais parler de l'environnement d'utilisation typique.

Pour des raisons pratiques, j'utilise gnuwin comme backend léger pour les éléments liés uniquement à distance aux environnements POSIX, tandis que cygwin est davantage un environnement POSIX à part entière et même un environnement très gnunixish.

De plus, gnuwin a tendance à devenir gonflé lors de l'installation de nombreux outils car les exécutables utilisent souvent des bibliothèques liées de manière statique. Cygwin, d'autre part, fournit une tonne de bibliothèques dynamiques et des exécutables plutôt petits. Donc, si vous n'avez besoin que de quelques exécutables, gnuwin a besoin de moins de ressources. Si vous avez besoin d'un environnement complexe, cygwin sera plus efficace.

gnuwin est également souvent légèrement obsolète, propose peu de logiciels, pas de gestionnaire de packages/mises à jour. C'est un environnement shell de base. Pas de ssh, pas de gcc, vim, pas de perl, pas de sql - vous pouvez les obtenir à partir d'autres sources, mais leur coopération est difficile à prévoir. Cygwin résout tous les problèmes ci-dessus.

En d'autres termes, gnuwin est idéal pour l'installateur occasionnel, pour simplement mettre du, trouver et trier dans votre $PATH. Pour faire du vrai travail POSIX, utilisez cygwin.

J'ai eu une fois un deuxième poste de travail Linux, puis une machine virtuelle Linux fonctionnant à côté de mon système Windows. Cygwin les a rendus obsolètes. Il est assez bon pour une tonne de choses tout en économisant des tonnes de ressources par rapport à un ordinateur dédié ou à une machine virtuelle.


Linux
  1. Différence entre le shell de connexion et le shell sans connexion ?

  2. Différence entre 2>&-, 2>/dev/null, |&, &>/dev/null et>/dev/null 2>&1 ?

  3. Quelle est la différence entre Sudo Su - et Sudo Su - ?

  4. Différence entre Eot et Eof?

  5. Différence entre l'expansion de la tuyauterie et de la commande ?

Différence entre apt et apt-get expliquée

Quelle est la différence entre une console, un terminal et un shell ?

Différence entre CLOCK_REALTIME et CLOCK_MONOTONIC ?

différence entre netstat et ss sous linux?

Différence entre ${} et $() dans Bash

différence entre les cgroups et les espaces de noms