2 votos

¿Cómo puedo ejecutar software de línea de comandos con Rosetta 1?

A petición de algunos usuarios de PPC, estoy intentando crear un paquete instalador compatible con PPC de algunos programas de código abierto. Naturalmente, esto requiere compilar un binario para PPC. Tengo una máquina virtual de Leopard instalada en mi Mac Intel, pero no tengo acceso a ningún hardware PPC real.

MacPorts no ofrece ningún compilador de C++11 que pueda compilar binarios de PPC en Intel, pero pensé que podría solucionar esto ejecutando todo MacPorts bajo Rosetta. Con Rosetta 2, esto sería fácil -Sólo tendría que poner la aplicación Terminal en "Abrir usando Rosetta", y todo lo que la Terminal ejecuta también usar Rosetta. Esta era una forma comúnmente recomendada para ejecutar Homebrew en los Macs M1, antes de que Homebrew finalmente añadiera soporte nativo para Apple Silicon hace unas semanas.

Por desgracia, Rosetta 1 no parece ser tan inteligente. Puedo configurar la aplicación Terminal para "Abrir usando Rosetta", pero esto hace que sólo la aplicación Terminal literal use Rosetta. Bash, MacPorts, etc. siguen ejecutándose como procesos Intel, según el Monitor de Actividad.

¿Existe una forma alternativa de ejecutar los programas de la línea de comandos -y preferiblemente todo MacPorts- con Rosetta?

4voto

user57945 Puntos 11

Siempre que esté en un sistema en el que esté disponible Rosetta v1 (hasta Mac OS X 10.6 incluido), puede indicar al sistema que ejecute el segmento ppc de un binario universal utilizando la función arch comando.

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

He encontrado útil mantener una máquina virtual en Parallels Desktop ejecutando OS X Server 10.6 con Xcode y otras herramientas para desarrolladores instaladas para este escenario, de compilación de software antiguo para sistemas PowerPC Mac obsoletos.

1voto

Wowfunhappy Puntos 33

En Leopard y Snow Leopard, puede y debe utilizar el arch comando . Lamentablemente, este comando no existe en Tiger. (Bueno, el arch existe, pero todo lo que puede hacer es imprimir tu arquitectura de cpu actual).

En su lugar, en Tiger puede utilizar la función translate binario directamente:

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

Tenga en cuenta que debe incluir la ruta completa al ejecutable. Si el ejecutable no existe (o has ignorado la frase anterior), translate fallará con un mensaje muy poco útil segmentation fault .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X