OS X Universal Binaries erzeugen

Seit Apple von der PowerPC-Architektur auf die Intel-Architektur umgestiegen ist, können Anwendungen sowohl für die eine als auch für die andere Architektur in einem Binary kompiliert werden. Solche Binaries werden als Universal Binaries bezeichnet.

Um eine Anwendung oder Bibliothek, die mit einem configure ausgeliefert wird, für beide Architekturen zu kompilieren, reicht es meistens folgenden configure-Aufruf zu verwenden.

./configure \
	CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386" \
	LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386" \
	--enable-shared --disable-dependency-tracking

Je nach Anwendung können noch weitere Parameter angehängt werden.

Um zu prüfen ob eine Anwendung wirklich als Universal kompiliert wurde, reichte eine Prüfung mit file:

$ file convert
convert: Mach-O fat file with 2 architectures
convert (for architecture ppc): Mach-O executable ppc
convert (for architecture i386): Mach-O executable i386
 
π