2009-08-19 22 views
5

Pregunta breve: ¿Cómo toma dos aplicaciones, una para intel y la otra ppc, y las empaqueta en un Universal Binary?Crear un "binario universal" a partir de dos aplicaciones?

Mis pensamientos actuales sobre este problema:

He leído pesar de que la documentación para desarrolladores de manzana en los binarios universales y no han sido capaces de encontrar una respuesta por lo que no puede ser posible.

Por razones que no entraré aquí tengo dos aplicaciones de mi programa (apposed a usar xtools para compilar el binario universalmente una vez), una para Intel Macs y la otra para Mac> = 10.3.9 ejecutándose PPC. Compartir recursos no es un problema.

Podría poner tanto MyProg_intel.app como MyProg_ppc.app en un zip y distribuirlo de esa manera; pero eso puede resultar en confusión para muchas personas a quienes distribuiré mi programa.

Respuesta

1

Para crear un binario universal, debe usar Xcode y seleccionar las arquitecturas de destino Intel y PPC. Por lo que yo sé, no se puede simplemente meter dos binarios diferentes en uno .app ex post facto.

3

Consulte la página de manual de lipo. Creo que puede usar -crear para tomar múltiples archivos de entrada y crear un único archivo de salida con múltiples arquitecturas.

5

Consulte la herramienta lipo. Te permitirá unir tus archivos binarios PPC e i386.

Además, a veces se pueden evitar destinos diferentes para diferentes arquitecturas usando conditional build settings en Xcode. Esto es útil si necesita vincularse con una biblioteca binaria diferente para cada arquitectura, por ejemplo.

+0

lipo parece que podría ser mi solución, pero el archivo de entrada está esperando un archivo binario o de otro tipo, no un .app (cuando lo intento dice _No se puede asignar el archivo de entrada ((os/kern) argumento no válido) _). Mi programa está desarrollado con Python y mi método de empaquetado no lo compila todo en un binario, hay una gran cantidad de dependencias. – marshallpenguin

+1

Utiliza lipo para fusionar solo los binarios: lipo myapp_ppc.app/Contents/MacOS/myapp -output myapp_i386.app/Contents/MacOS/myapp combina el lado PPC en la aplicación Intel, que luego puede cambiar el nombre como una aplicación universal. Pero los otros carteles son más correctos. Primero debe crear la aplicación universal después de compilar y vincular cada arquitectura, en lugar de hacer el trabajo de compilar .app dos veces y descartar una. – cdespinosa

+0

py2app produce un binario universal ya. ¿Por qué no crear sus dependencias con "-arch i386 -arch ppc" en CFLAGS, CXXFLAGS y LDFLAGS? –

1

El sitio web para desarrolladores de Apple tiene un artículo en Building an Open Source Universal Binary que explica cómo usar Xcode para "empaquetar" un binario universal utilizando scripts de compilación. Este es probablemente el mejor camino hacia la cordura. Puede usar lipo, pero a la larga si va a actualizar y mantener su aplicación, tener un proyecto de Xcode que haga la magia para usted le tomará mucho menos tiempo.

Cuestiones relacionadas