2009-08-19 23 views
5

Breve domanda: Come si prendono due app, una per Intel e l'altra ppc e le si raggruppano in un unico Universal Binary?Crea un "binario universale" da due app?

mio attuale pensiero su questo problema:

Ho letto anche se la documentazione per gli sviluppatori di Apple su binari universali e non sono stati in grado di trovare una risposta in modo che non può essere possibile.

A causa di motivi per cui non entrerò qui ho due app del mio programma (applicato a xtools per compilare universalmente il binario una volta), uno per i Mac Intel e l'altro per Mac> = 10.3.9 in esecuzione su PPC. La condivisione delle risorse è un non-problema.

Potrei inserire sia MyProg_intel.app che MyProg_ppc.app in un unico zip e distribuirlo in questo modo; ma ciò potrebbe causare confusione per molte persone a cui distribuirò il mio programma.

risposta

1

Per creare un binario universale, è necessario utilizzare Xcode e selezionare entrambe le architetture di destinazione Intel e PPC. Per quanto ne so, non puoi semplicemente inserire due binari diversi in uno .app ex post facto.

3

Controlla la pagina man di lipo. Credo che tu possa usare -creare per prendere più file di input e creare un singolo file di output con più architetture.

5

Vedere lo strumento lipo. Ti permetterà di ricucire i tuoi binari PPC e i386.

Inoltre, a volte è possibile evitare obiettivi separati per diverse architetture utilizzando conditional build settings in Xcode. Questo è utile se devi collegarti ad una diversa libreria binaria per ogni architettura, per esempio.

+0

lipo sembra che potrebbe essere la mia soluzione, ma il file di input è in attesa di un binario o di un altro tipo di file - non un .app (quando provo dice _Can't map file di input ((os/kern) argomento non valido) _). Il mio programma è costruito con python e il mio metodo di pacchettizzazione non compila ogni cosa in un unico binario, ci sono un gran numero di dipendenze. – marshallpenguin

+1

Usa lipo per unire solo i binari: lipo myapp_ppc.app/Contents/MacOS/myapp -output myapp_i386.app/Contents/MacOS/myapp unisce il lato PPC all'app Intel, che puoi quindi rinominare come app universale. Ma gli altri poster sono più corretti. Dovresti creare l'app universale in primo luogo dopo aver costruito e collegato ogni architettura, invece di fare il lavoro di costruire l'app due volte e buttarne via uno. – cdespinosa

+0

py2app produce già un binario universale. Perché non creare le tue dipendenze con "-arch i386 -arch ppc" in CFLAGS, CXXFLAGS e LDFLAGS? –

1

Il sito Web dello sviluppatore di Apple ha un articolo su Building an Open Source Universal Binary che spiega come usare Xcode per "assemblare" un binario universale usando gli script di compilazione. Questa è probabilmente la tua strada migliore per la sanità mentale. Potresti usare lipo, ma a lungo termine se hai intenzione di aggiornare e mantenere la tua applicazione, avere un progetto Xcode che fa la magia per te richiederà molto meno tempo.

Problemi correlati