58 votes

Est-il conseillé de passer de Cygwin 32 bits à Cygwin 64 bits?

J'ai été en utilisant Cygwin (pour longtemps). Plus précisément, je l'utilise (y compris gcc/g++) sur Win7 pour le travail de développement. J'ai récemment remarqué qu'il y existe maintenant une version 64 bits.

Je n'ai pas de besoin spécifique qui stipule que je dois faire la transition vers le 64 bits, mais je me demandais si faire de toute façon. Est-il conseillé? Quels sont les avantages et les inconvénients? Y sont connus sur-arc questions lors de la prise de la transition?

89voto

Warren Young Points 16324

À l'heure actuelle (septembre 2013), le plus gros problème avec Cygwin 64 est tout simplement qu'il n'a pas tous les paquetages portés sur elle encore. La majorité sont portés, mais la répartition peut être raté quelque chose dont vous dépendez. (Il y a un maintenu liste des paquets manquants.)

Le plus grand avantage de l'utilisation de la version 64 bits est l'accès à de plus grandes quantités de mémoire. Cela peut être une affaire énorme. Si vous utilisez la version Cygwin de R avec de grands ensembles de données, par exemple, vous devez passer à Cygwin 64 ASAP car R veut charger l'ensemble des données dans la RAM, donc l'utilisation de Cygwin 32 sur une machine 64 bits artificiellement les limites de ce que R peut accomplir sous Cygwin.

Si vous n'êtes pas à court de RAM dans le Cygwin programmes que vous exécutez, je n'aurais pas pris la peine de faire le changement, sauf si vous voulez juste jouer avec le nouveau jouet pour son propre bien.

Vous pouvez avoir les deux versions installées et fonctionnant en même temps. Vous pouvez même avoir un MinTTY fenêtre pour chaque lever à la même heure. Néanmoins, il est préférable de les traiter comme des mondes séparés, puisque les deux Cygwins sont fondamentalement incompatibles. Vous serez confronté à des problèmes si vous essayez de les faire interagir.

Cette incompatibilité fondamentale peut vous mordre dans plusieurs façons:

  1. Même si un Cygwin 64 programme peut lancer un Cygwin 32 programme et vice-versa, plusieurs pistes de processus de mécanismes de ne pas travailler à travers les frontières: mémoire partagée POSIX, descripteur de fichier en passant, getppid(2)...

  2. Même certaines choses que vous ne pensez pas comme étant de la croix-processus échoue lorsque vous essayez de faire deux différents Cygwins interagir. Beaucoup de contenu de Cygwin l' /proc vient de l'intérieur de la DLL, par exemple, de sorte qu'il sera différente entre les deux Cygwins, même si elles sont en cours d'exécution simultanément sur la même machine.

  3. Disons que vous voulez partager /usr/local entre le Cygwins de sorte que vous n'avez pas à avoir deux copies de tous les logiciels que vous avez construit à partir de la source.

    Après la lecture du premier point ci-dessus, vous vous rendez compte que vous ne pouvez pas partager /usr/local/bin.

    Après réflexion, vous décidez que vous souhaitez partager des /usr/local/src de sorte que vous au moins ne pas avoir de doublons source d'arbres. Vous allez encore avoir des problèmes si vous construisez un de ces programmes dans l'arbre source, comme il est typique. (c - ./configure && make && make install)

    Cela se produit pour deux raisons:

    • Généré les fichiers binaires (*.o, *.so, *.a, *.exe...) sera incompatible entre les deux Cygwins, de sorte que si vous make clean lors de la commutation entre Cygwins, ils vont être laissé derrière, provoquant la confusion.

    • Même si vous vous rappelez de make clean, la sortie de l' ./configure sous chaque Cygwin seront probablement différents, afin de tenter de construire un programme sous Cygwin 64 qui a été configuré sous Cygwin 32 (ou vice versa) peut échouer.

    Il y a plusieurs façons de sortir de ce piège:

    • Abandonner sur le partage de l' /usr/local/src, trop.

    • N'oubliez pas de make clean && ./configure chaque fois que vous basculez Cygwins.

    • Construire de construire de l'arbre séparément pour chaque Cygwin variante.

      (Cette option est le meilleur choix disponible, mais pas tous les arbres sont mis en place pour permettre cela.)

Si vous n'avez pas une bonne raison pour le mettre en place avec des choses comme cela, installez une version ou l'autre, pas les deux. Si vous avez un fonctionnement Cygwin 32 installation et n'avez pas besoin de les avantages de Cygwin 64, rester avec elle. Cygwin 32 ne va pas disparaître de sitôt.

En même temps, si je devais monter un nouveau 64-bit de Windows, j'avais installer Cygwin 64 sur elle, sauf si je savais à l'avant il n'avait pas un paquet porté que j'avais besoin, et je n'étais pas prêt à faire le port de moi-même. Il est stable et pratiquement complète.

6voto

einpoklum Points 2893

Corinna Vinschen, co-développeur en chef de Cygwin, a déclaré ce qui suit, dans le cadre de la Cygwin 1.7.25 notes de publication:

SUR LE 64 BITS VERSION

Ce n'est que le quatrième officiel Cygwin qui est publiquement disponible en version 64 bits pour l'architecture AMD64, les systèmes Windows, il est donc encore assez nouveau.

Droit maintenant, le 64 bits Cygwin distribution ne vient pas avec autant d' les paquets de la version 32 bits, mais c'est aussi stable que le 32 bits version, et plus de paquets seront disponibles au cours du temps.

Si vous êtes déjà en cours d'exécution 32 bits version de Cygwin sur une version 64 bits de Windows machines, vous pouvez continuer à le faire. Si vous êtes la planification d'une nouvelle installation de Cygwin sur une version 64 bits de Windows ordinateur, pensez à utiliser la nouvelle 64 bits Version Cygwin, sauf si vous avez besoin de certains paquets ne sont pas encore disponibles dans le 64 bits version.

4voto

Pablo Halpern Points 46

L’autre problème de la «mise à niveau» vers la version 64 bits réside dans le fait qu’il n’existe pas, autant que je sache, de réinstallation automatique de la même liste de packages que celle que vous aviez dans l’installation 32 bits. Vous devrez donc minutieusement créer une liste. des paquets installés et cochez-les minutieusement dans la nouvelle installation pour revenir à l’emplacement où vous vous trouviez avant de le réinstaller.

1voto

Phil Goetz Points 93

Je ne sais pas si sqlite3 dans cygwin64 peut indexer des bases de données dont la taille est supérieure à 4G, mais je sais que sqlite3 dans cygwin32 ne le peut pas et que sqlite3 dans 64 bits Linux le peut.

0voto

user167328 Points 6

J'utilise NXmachine 3.5 pour me connecter à des bureaux virtuels et j'obtiens de lourds conflits avec cygwin1.dll à partir de l'installation 64 bits. Je suis donc retourné à cygwin 32 bits.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X