<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Universal_Binary</id>
	<title>Universal Binary - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Universal_Binary"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Universal_Binary&amp;action=history"/>
	<updated>2026-05-27T02:00:52Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Universal_Binary&amp;diff=542580&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Universal_Binary&amp;diff=542580&amp;oldid=prev"/>
		<updated>2026-04-19T15:05:10Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:Apple-Universal-binary-logo.png|mini|hochkant=0.4|Apples Logo für &amp;#039;&amp;#039;Universal Binary&amp;#039;&amp;#039;]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;{{lang|en|Universal Binaries}}&amp;#039;&amp;#039;&amp;#039; (auf Deutsch in etwa &amp;#039;&amp;#039;universelle Binärdateien&amp;#039;&amp;#039;), oft abgekürzt mit &amp;#039;&amp;#039;&amp;#039;UB&amp;#039;&amp;#039;&amp;#039;, sind im [[Apple]]-Jargon [[ausführbare Datei]]en (d.&amp;amp;nbsp;h. [[Computerprogramm|Programme]]), die nativ ausführbare [[Maschinensprache]] für mehr als eine [[Prozessorarchitektur]] enthalten. Apple hat &amp;#039;&amp;#039;{{lang|en|Universal Binaries}}&amp;#039;&amp;#039; bei der Umstellung von [[PowerPC]]- auf Intel-[[x86-Prozessor|x86]]-Prozessoren ab 2005 verwendet. Die Technik wurde zudem in [[Xcode]] integriert, damit erstellte und entsprechend [[Compiler|kompilierte]] Applikationen konnten nativ sowohl auf PowerPC- als auch auf Intel-[[Macintosh|Macs]] laufen. Bei der Umstellung von Intel auf [[Arm-Architektur|Arm]] seit 2020 wird mit &amp;#039;&amp;#039;{{lang|en|Universal Binary}}&amp;amp;nbsp;2&amp;#039;&amp;#039; dieselbe Technik noch einmal verwendet und ebenfalls in Xcode integriert.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
&amp;#039;&amp;#039;{{lang|en|Universal Binaries}}&amp;#039;&amp;#039; basieren auf dem mit [[Mach (Kernel)|MACH]] Mitte der 1980er Jahre entworfenen [[Mach-O]]-[[Binärdatei|Binärformat]]. Unter [[OPENSTEP|NeXTStep]], ab 1987 auf der Basis von Mach Version&amp;amp;nbsp;2 entwickelt, wurde das Format auf die vom [[Betriebssystem]] (ab NeXTStep 3.1 von 1993) unterstützten Architekturen [[Motorola-68000er-Familie|m68k]], [[IA-32]] „i386“ (32-Bit-[[x86-Prozessor|x86]]), [[PA-RISC]] und [[SPARC-Architektur|SPARC]] erweitert und &amp;#039;&amp;#039;{{lang|en|Multi-Architecture Binaries}}&amp;#039;&amp;#039; genannt.&lt;br /&gt;
&lt;br /&gt;
Auch Apple hatte ab 1994 bereits eine Umstellung der Prozessorarchitektur unter dem Betriebssystem [[System&amp;amp;nbsp;7]] von der m68k auf die PowerPC-Architektur durchgeführt und dabei mit &amp;#039;&amp;#039;{{lang|en|Fat Binaries}}&amp;#039;&amp;#039; ein ähnliches Konzept umgesetzt. Das verwendete Binärformat ist jedoch nicht mit dem von Mach-O verwandt.&lt;br /&gt;
&lt;br /&gt;
Apple erwarb 1997 NeXT samt dem von NeXTSTEP in [[OPENSTEP]] umbenannten Mach-Betriebssystem und portierte es im Project [[Rhapsody (Betriebssystem)|Rhapsody]] auf die von Apple damals genutzte PowerPC-Plattform. Rhapsody hätte das [[Mac OS (Classic)|klassische Mac&amp;amp;nbsp;OS]] vollständig ersetzen sollen, war jedoch ein vollkommen anderes Betriebssystem und mit bestehenden [[Mac OS (Apple)|Mac-OS]]-Programmen nicht kompatibel. Als Rhapsody von den Herstellern wichtiger Anwendungssoftware nicht angenommen wurde, portierte Apple große Teile der Mac-OS-[[Programmierschnittstelle]] unter dem Namen [[Carbon (Apple)|Carbon]] auf das nun von Rhapsody in [[macOS|Mac OS&amp;amp;nbsp;X]] umbenannte neue Betriebssystem. Das Mach-O-Format besteht seither mit Mac OS&amp;amp;nbsp;X weiter, wurde anfangs jedoch nur mehr für eine einzige Architektur verwendet: die PowerPC-Architektur.&lt;br /&gt;
&lt;br /&gt;
2005, mit der Umstellung von der PowerPC- auf die [[IA-32]]-Architektur, griff Apple die ohnehin noch vorhandene Technik der &amp;#039;&amp;#039;{{lang|en|Multi-Architecture Binaries}}&amp;#039;&amp;#039; wieder auf: Auf der {{lang|en|[[Worldwide Developers Conference]]}} (WWDC) wurde es, umbenannt in &amp;#039;&amp;#039;{{lang|en|Universal Binaries}}&amp;#039;&amp;#039;, der Öffentlichkeit vorgestellt. Apple integrierte die Technik in die eigene Entwicklungsumgebung [[Xcode]], um es den Entwicklern von Anwendungsprogrammen zu erleichtern, nativen Binärcode für beide Architekturen in ihre Softwareprodukte zu integrieren. In diesem Zuge war es auch möglich, sowohl 32- als auch 64-Bit-Binärcode für dieselbe Architektur in einem &amp;#039;&amp;#039;{{lang|en|Universal Binary}}&amp;#039;&amp;#039; unterzubringen, also sowohl 32-Bit- und 64-Bit-x86 als auch 32-Bit- und 64-Bit-PowerPC. Nach dem erfolgten Übergang auf IA-32 (32-Bit-x86) bzw. x64 (64-Bit-x86) wurde die Unterstützung für PowerPC/x86-{{lang|en|Universal-Binaries}} wieder aus Xcode entfernt. [[iOS (Betriebssystem)|iOS]] unterstützt &amp;#039;&amp;#039;{{lang|en|Universal Binaries}}&amp;#039;&amp;#039; ebenfalls, wodurch [[Mobile App]]s für verschiedene [[Arm-Architektur]]en ermöglicht werden.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
Um &amp;#039;&amp;#039;{{lang|en|Universal Binaries}}&amp;#039;&amp;#039; zu verwenden, muss der [[Kernel (Betriebssystem)|Kernel]] eines Betriebssystems mit dem von NeXT erweiterten Mach-O-Binärformat umgehen können. Gegenüber dem einfachen Mach-O-Format sind &amp;#039;&amp;#039;{{lang|en|Multi-Architecture Binaries}}&amp;#039;&amp;#039; in einander gekapselte Mach-O-Dateien, mit zusätzlichen [[Metadaten]]. Die Header-Struktur von Mach-O selbst wurde dabei nicht verändert, aber um zusätzliche Flags erweitert:&amp;lt;ref&amp;gt;{{Internetquelle |autor=William Woodruff |url=https://yossarian.net/res/pub/macho-internals/macho-internals.pdf |titel=Mach-O Internals |seiten=12 |datum=2016-02-10 |format=PDF; 307&amp;amp;nbsp;KB |sprache=en |abruf=2020-07-14 |abruf-verborgen=ja}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Architektur-{{lang|en|Magic}}-Nummern&lt;br /&gt;
** &amp;lt;code&amp;gt;MH_MAGIC&amp;lt;/code&amp;gt; repräsentiert Binärcode in Big-Endian-[[Byte-Reihenfolge]] in [[32-Bit-Architektur|32-Bit]]&lt;br /&gt;
** &amp;lt;code&amp;gt;MH_CIGAM&amp;lt;/code&amp;gt; steht für Binärcode in Little-Endian-Byte-Reihenfolge in 32-Bit&lt;br /&gt;
** &amp;lt;code&amp;gt;MH_MAGIC_64&amp;lt;/code&amp;gt; repräsentiert Binärcode in Big-Endian-Byte-Reihenfolge in [[64-Bit-Architektur|64-Bit]]&lt;br /&gt;
** &amp;lt;code&amp;gt;MH_CIGAM_64&amp;lt;/code&amp;gt; steht für Binärcode in Little-Endian-Byte-Reihenfolge in 64-Bit&lt;br /&gt;
* CPU-Typ, beispielsweise:&lt;br /&gt;
** &amp;lt;code&amp;gt;CPU_TYPE_POWERPC&amp;lt;/code&amp;gt; für 32-Bit-PowerPC&lt;br /&gt;
** &amp;lt;code&amp;gt;CPU_TYPE_POWERPC64&amp;lt;/code&amp;gt; für 64-Bit-PowerPC&lt;br /&gt;
** &amp;lt;code&amp;gt;CPU_TYPE_I386&amp;lt;/code&amp;gt; für 32-Bit-[[x86-Prozessor|x86]] bzw. 32-Bit-IA-32 (ab dem [[Intel 80386]], darum i386)&lt;br /&gt;
** &amp;lt;code&amp;gt;CPU_TYPE_X86_64&amp;lt;/code&amp;gt; für 64-Bit-x86 bzw. [[x64]] (auch x86-64, 64-Bit-IA-32)&lt;br /&gt;
** &amp;lt;code&amp;gt;CPU_TYPE_ARM64&amp;lt;/code&amp;gt; für die 64-Bit-[[ARM-Architektur]] (auch arm64e)&lt;br /&gt;
&lt;br /&gt;
Eine &amp;#039;&amp;#039;{{lang|en|Universal Binary}}&amp;#039;&amp;#039; wird beim Ausführen vom [[Betriebssystem]] als solche an ihrem Header erkannt, wodurch das Betriebssystem anschließend anhand der vorhandenen Architektur den jeweiligen ausführbaren Code abarbeiten kann. Noch heute enthalten [[Open Source|Open-Source]]-Bestandteile von macOS Hinweise auf m68k, SPARC und weitere CPUs. 2020 wurden 17 verschiedene Architekturen gezählt.&amp;lt;ref name=&amp;quot;heiseonline_4842217&amp;quot;&amp;gt;{{Heise online |ID=4842217 |Titel=macOS: Universal Binaries mit ARM, Intel und PowerPC |Autor=Ben Schwan |Datum=2020-07-14 |Abruf=2020-07-14}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang ermöglicht es nun, eine Anwendung sowohl auf einem Apple [[Computer]] mit PowerPC- als auch mit Intel-Architektur (&amp;#039;&amp;#039;{{lang|en|Universal Binary}}&amp;#039;&amp;#039; von 2005) oder mit Intel- als auch mit ARM-Architektur (&amp;#039;&amp;#039;{{lang|en|Universal Binary}}&amp;#039;&amp;#039; von 2020) ohne Geschwindigkeitsverlust auszuführen.&lt;br /&gt;
&lt;br /&gt;
== Technisches ==&lt;br /&gt;
Realisiert werden Universal Binaries über das Binärformat [[Mach-O]], das im Gegensatz zum [[Executable and Linking Format|ELF-Format]], welches unter Linux und anderen unixähnlichen Betriebssystemen verbreitet ist, Binärcode für mehrere Architekturen enthalten kann. Mit dem Tool &amp;lt;code&amp;gt;lipo&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;[http://www.opensource.apple.com/source/cctools/cctools-590/man/lipo.1 lipo.1] [[manpage]] im [[Quelltext]] (englisch), abgerufen am 21. Juli 2015&amp;lt;/ref&amp;gt; aus [[Xcode]] und &amp;lt;code&amp;gt;objdump&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;[https://sourceware.org/binutils/docs/binutils/objdump.html objdump(1)] manpage (englisch), abgerufen am 21. Juli 2015&amp;lt;/ref&amp;gt; aus den [[GNU]] Binutils kann man die Binärcodes eines Universal Binaries auslesen. Auch &amp;lt;code&amp;gt;[[file]]&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;[https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/file.1.html file(1)] manpage (englisch), abgerufen am 21. Juli 2015&amp;lt;/ref&amp;gt; gibt einen Überblick über die enthaltenen Architekturen.&lt;br /&gt;
&lt;br /&gt;
Der universale [[Safari (Browser)|Safari]]-[[Webbrowser]] enthielt (ca. 2005/2006) sowohl Code für Intel (&amp;lt;code&amp;gt;i386&amp;lt;/code&amp;gt;) als auch für PowerPC (&amp;lt;code&amp;gt;powerpc:common&amp;lt;/code&amp;gt;). „&amp;lt;code&amp;gt;mach-o-le&amp;lt;/code&amp;gt;“ und „&amp;lt;code&amp;gt;mach-o-be&amp;lt;/code&amp;gt;“ stehen für die [[Byte-Reihenfolge]]n &amp;#039;&amp;#039;Little Endian&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Big Endian&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
 [[Prompt|$]] objdump -f /Applications/Safari.app/Contents/MacOS/Safari&lt;br /&gt;
 In archive /Applications/Safari.app/Contents/MacOS/Safari:&lt;br /&gt;
 &lt;br /&gt;
 /Applications/Safari.app/Contents/MacOS/Safari:     file format mach-o-le&lt;br /&gt;
 architecture: i386, flags 0x000001ff:&lt;br /&gt;
 HAS_RELOC, EXEC_P, HAS_LINENO, HAS_DEBUG, HAS_SYMS, HAS_LOCALS, DYNAMIC, WP_TEXT, D_PAGED&lt;br /&gt;
 start address 0x0000000000000000&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 /Applications/Safari.app/Contents/MacOS/Safari:     file format mach-o-be&lt;br /&gt;
 architecture: powerpc:common, flags 0x000001ff:&lt;br /&gt;
 HAS_RELOC, EXEC_P, HAS_LINENO, HAS_DEBUG, HAS_SYMS, HAS_LOCALS, DYNAMIC, WP_TEXT, D_PAGED&lt;br /&gt;
 start address 0x0000000000061830&lt;br /&gt;
&lt;br /&gt;
Es gibt auch Programme, die in zwei getrennten Versionen (Intel-Binary und PPC-Binary) angeboten werden, hier muss man sich (sofern man nicht doppelt herunterladen möchte) bereits beim Herunterladen für die richtige Datei entscheiden, was jedoch den Vorteil kleinerer Dateien hat.&lt;br /&gt;
&lt;br /&gt;
Bei Programmen für nur eine Architektur wird entsprechend nur ein Binärcode angezeigt:&lt;br /&gt;
&lt;br /&gt;
 [[Prompt|$]] objdump -f /Applications/VLC.app/Contents/MacOS/VLC&lt;br /&gt;
 &lt;br /&gt;
 /Applications/VLC.app/Contents/MacOS/VLC:     file format mach-o-le&lt;br /&gt;
 architecture: i386, flags 0x000001ff:&lt;br /&gt;
 HAS_RELOC, EXEC_P, HAS_LINENO, HAS_DEBUG, HAS_SYMS, HAS_LOCALS, DYNAMIC, WP_TEXT, D_PAGED&lt;br /&gt;
 start address 0x0000000000000000&lt;br /&gt;
&lt;br /&gt;
Ohne zusätzliche Programme lässt sich der Binärcode mit dem Befehl &amp;lt;code&amp;gt;[[file]]&amp;lt;/code&amp;gt; auslesen, also für das obige Beispiel Safari: &amp;lt;code&amp;gt;file /Applications/Safari.app/Contents/MacOS/Safari&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== „Klassische“ Fat Binaries ==&lt;br /&gt;
Schon beim Wechsel von der Motorola-[[Motorola 68000er-Familie|68k]]- auf die [[PowerPC]]-Prozessorarchitektur verwendete Apple das Konzept, in derselben Datei Code für mehrere Prozessoren unterzubringen. Damals wurde der Begriff [[Fat Binary]] verwendet. Realisiert wurde dies unter [[Mac OS (Classic)|klassischem Mac&amp;amp;nbsp;OS]] jedoch nicht als Mach-O-Datei, sondern als das eigentlich modernere [[Preferred Executable Format|PEF]]-Dateiformat ([[Preferred Executable Format]]). Dabei lag der m68k-Code in der &amp;#039;&amp;#039;resource fork&amp;#039;&amp;#039; und der PowerPC-Code in der &amp;#039;&amp;#039;data fork&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Trivia ==&lt;br /&gt;
Theoretisch ist es möglich, weit mehr als zwei Architekturen in eine sogenannte Super-&amp;#039;&amp;#039;{{lang|en|Universal Binary}}&amp;#039;&amp;#039; zu packen, sodass das resultierende Programm anschließend auf zahlreichen Architekturen nativ lauffähig ist.&amp;lt;ref name=&amp;quot;heiseonline_4842217&amp;quot; /&amp;gt; Praktisch wurde das z.&amp;amp;nbsp;B. bei der Umstellung von PowerPC auf Intel für bis zu vier Architekturen umgesetzt.&amp;lt;ref&amp;gt;[https://nuclearpixel.com/blog/2010-05-17_lame_3.98.4_universal_for_mac_osx_10.5/ LAME 3.98.4 Universal for Mac OSX 10.5] (englisch) – [[LAME]] als Beispiel für eine &amp;#039;&amp;#039;{{lang|en|Universal Binary}}&amp;#039;&amp;#039; für vier Architekturen: PowerPC, PowerPC64, i386 und x86-64&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* Apple: [https://www.apple.com/de/universal/ „Universal Programme“]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Binärformat]]&lt;br /&gt;
[[Kategorie:MacOS-Software]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>