2 votes

Comment puis-je exécuter un logiciel en ligne de commande avec Rosetta 1 ?

À la demande de certains utilisateurs de PPC, j'essaie de créer un paquet d'installation compatible PPC pour certains logiciels libres. Naturellement, cela nécessite la compilation d'un binaire PPC. J'ai une machine virtuelle Leopard installée sur mon Mac Intel, mais je n'ai pas accès à du matériel PPC.

MacPorts n'offre pas de compilateurs C++11 permettant la compilation croisée de binaires PPC sur Intel, mais je pensais pouvoir contourner ce problème en exécutant l'ensemble de MacPorts sous Rosetta. Avec Rosetta 2, ce serait facile -J'ai juste à configurer l'application Terminal pour qu'elle soit "ouverte en utilisant Rosetta", et tout ce que le Terminal exécute sera également utiliser Rosetta. Il s'agissait d'une méthode couramment recommandée pour faire fonctionner Homebrew sur les Macs M1, avant que Homebrew n'ajoute finalement le support natif de l'Apple Silicon il y a quelques semaines.

Malheureusement, Rosetta 1 ne semble pas être aussi intelligent. Je peux configurer l'application Terminal pour "Ouvrir en utilisant Rosetta", mais cela fait que seule l'application Terminal littérale utilise Rosetta. Bash, MacPorts, etc. sont toujours exécutés en tant que processus Intel, selon Activity Monitor.

Existe-t-il un autre moyen d'exécuter des programmes en ligne de commande - et de préférence l'ensemble de MacPorts - sous Rosetta ?

4voto

bleater Points 265

Si vous êtes sur un système où Rosetta v1 est disponible (jusqu'à Mac OS X 10.6 inclus), vous pouvez demander au système d'exécuter le segment ppc d'un binaire universel à l'aide de la fonction arch commandement.

/usr/bin/arch -arch ppc /path/to/some/executable

J'ai trouvé utile de conserver une machine virtuelle dans Parallels Desktop exécutant OS X Server 10.6 avec Xcode et d'autres outils de développement installés pour ce scénario de compilation d'anciens logiciels pour des systèmes Mac PowerPC obsolètes.

1voto

Wowfunhappy Points 6021

Sur Leopard et Snow Leopard, vous pouvez et devez utiliser le arch commande . Malheureusement, cette commande n'existe pas sur Tiger. (En fait, le arch existe, mais tout ce qu'il peut faire est d'imprimer votre architecture actuelle de processeur).

Au lieu de cela, sur Tiger, vous pouvez utiliser le translate binaire directement :

/usr/libexec/oah/translate /path/to/some/executable

Notez que vous devez inclure le chemin complet de l'exécutable. Si l'exécutable n'existe pas (ou si vous n'avez pas tenu compte de la phrase précédente), translate échouera avec un message très peu utile de type segmentation fault .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X