# Universal binary

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Universal_binary
> Markdown URL: https://mediated.wiki/source/Universal_binary.md
> Source: https://en.wikipedia.org/wiki/Universal_binary
> Source revision: 1338380017
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

Apple multi-architecture binary files

Not to be confused with [Universal Hex Format](/source/Universal_Hex_Format).

Logo used to indicate a Universal application

Mac transition to Intel processors PowerPC Architecture Universal binary Boot Camp Rosetta Developer Transition Kit v t e

The **universal binary** format is a format for [executable files](/source/Executable_file) that run natively either on both [PowerPC](/source/PowerPC)-based and [x86](/source/X86)-based [Macs](/source/Mac_(computer)) or on both [Intel 64](/source/Intel_64)-based and [ARM64](/source/AArch64)-based Macs. The format originated on [NeXTStep](/source/NeXTStep) as "[Multi-Architecture Binaries](/source/Fat_binary#NeXTSTEP_Multi-Architecture_Binaries)", and the concept is more generally known as a *[fat binary](/source/Fat_binary)*, as seen on [Power Macintosh](/source/Power_Macintosh).

With the release of [Mac OS X Snow Leopard](/source/Mac_OS_X_Snow_Leopard), and before that, since the move to [64-bit](/source/Mac_OS_X_Snow_Leopard#64-bit_architecture) architectures in general, some software publishers such as [Mozilla](/source/Mozilla)[1] have used the term "universal" to refer to a fat binary that includes builds for both i386 (32-bit Intel) and x86_64 systems. The same mechanism that is used to select between the PowerPC or Intel builds of an application is also used to select between the 32-bit or 64-bit builds of either PowerPC or Intel architectures.

Apple, however, continued to require native compatibility with both PowerPC and Intel in order to grant third-party software publishers permission to use Apple's trademarks related to universal binaries.[2] Apple does not specify whether or not such third-party software publishers must (or should) bundle separate builds for all architectures.

Universal binaries were introduced into Mac OS at the 2005 [Apple Worldwide Developers Conference](/source/Apple_Worldwide_Developers_Conference) as a means to ease the transition from the existing PowerPC architecture to systems based on Intel processors, which began shipping in 2006. Universal binaries typically include both PowerPC and [x86](/source/X86_architecture) versions of a compiled application. The [operating system](/source/Operating_system) detects a universal binary by its header, and executes the appropriate section for the architecture in use. This allows the application to run natively on any supported architecture, with no negative performance impact beyond an increase in the storage space taken up by the larger binary.

Starting with Mac OS X Snow Leopard, only Intel-based Macs are supported, so software that specifically depends upon capabilities present only in Mac OS X 10.6 or newer will only run on Intel-based Macs and therefore does not require Intel/PPC fat binaries. Additionally, starting with [OS X Lion](/source/Mac_OS_X_Lion), only 64-bit Intel Macs are supported, so software that specifically depends on new features in OS X 10.7 or newer will only run on 64-bit processors and therefore does not require 32-bit/64-bit fat binaries.[3][4] Fat binaries would only be necessary for software that is designed to have [backward compatibility](/source/Backward_compatibility) with older versions of [Mac OS X](/source/MacOS) running on older hardware.

The new **Universal 2** binary format was introduced at the 2020 Worldwide Developers Conference.[5] Universal 2 allows applications to run on both [Intel](/source/Intel) [x86-64](/source/X86-64)-based and [ARM64](/source/AArch64)-based [Macintosh](/source/Apple_Macintosh) computers, to enable the [transition to Apple silicon](/source/Mac_transition_to_Apple_silicon).

## Motivation

There are two general alternative solutions. The first is to simply provide two separate binaries, one compiled for the x86 architecture and one for the PowerPC architecture. However, this can be confusing to software users unfamiliar with the difference between the two, although the confusion can be remedied through improved documentation, or the use of [hybrid CDs](/source/Hybrid_CD). The other alternative is to rely on [emulation](/source/Emulator) of one architecture by a system running the other architecture. This approach results in lower performance, and is generally regarded an interim solution to be used only until universal binaries or specifically compiled binaries are available as with [Rosetta](/source/Rosetta_(software)).

Universal binaries are larger than single-platform binaries, because multiple copies of the compiled code must be stored. However, because some non-executable resources are shared by the two architectures, the size of the resulting universal binary can be, and usually is, smaller than the combined sizes of two individual binaries. They also do not require extra [RAM](/source/Random_access_memory) because only one of those two copies is loaded for execution.

## History

The concept of a universal binary originated with "[Multi-Architecture Binaries](/source/Fat_binary#NeXTSTEP_Multi-Architecture_Binaries)" in [NeXTSTEP](/source/NeXTSTEP), the main architectural foundation of [Mac OS X](/source/MacOS). NeXTSTEP supports universal binaries so that one executable image can run on multiple architectures, including [Motorola](/source/Motorola)'s [m68k](/source/M68k), [Intel](/source/Intel)'s [x86](/source/X86), [Sun Microsystems](/source/Sun_Microsystems)'s [SPARC](/source/SPARC), and [Hewlett-Packard](/source/Hewlett-Packard)'s [PA-RISC](/source/PA-RISC). NeXTSTEP and macOS use [Mach-O](/source/Mach-O) archive as the binary format underlying the universal binary.

Apple previously used a similar technique during the transition from [68k](/source/68k) processors to PowerPC in the mid-1990s. These dual-platform executables are called [fat binaries](/source/Fat_binary), referring to their larger file size.

Apple's [Xcode](/source/Xcode) 2.1 supports the creation of these files, a new feature in that release. A simple application developed with [processor-independence](/source/Porting) in mind might require very few changes to compile as a universal binary, but a complex application designed to take advantage of architecture-specific features might require substantial modification. Applications originally built using other development tools might require additional modification. These reasons have been given for the delay between the introduction of Intel-based Macintosh computers and the availability of third-party applications in universal binary format. Apple's delivery of Intel-based computers several months ahead of their previously announced schedule is another factor in this gap.

Apple's [Xcode](/source/Xcode) 2.4 takes the concept of universal binaries even further, by allowing four-architecture binaries to be created (32- and 64-bit for both Intel and PowerPC), therefore allowing a single executable to take full advantage of the CPU capabilities of any [Mac OS X](/source/MacOS) machine.

### Universal applications

Many software developers have provided universal binary updates for their products since the 2005 WWDC. As of December 2008, Apple's website listed more than 7,500 Universal applications.[6]

On April 16, 2007, [Adobe Systems](/source/Adobe_Systems) announced the release of [Adobe Creative Suite 3](/source/Adobe_Creative_Suite), the first version of the application suite in the Universal Binary format.[7]

From 2006 to 2010, many Mac OS X applications were ported to Universal Binary format, including [QuarkXPress](/source/QuarkXPress), Apple's own [Final Cut Studio](/source/Final_Cut_Studio), [Adobe Creative Suite](/source/Adobe_Creative_Suite), [Microsoft Office 2008](/source/Microsoft_Office_2008), and [Shockwave Player](/source/Shockwave_Player) with version 11 - after that time most were made Intel-only apps. Non-Universal 32-bit PowerPC programs will run on Intel Macs running Mac OS X 10.4, 10.5, and 10.6 (in most cases), but with non-optimal performance, since they must be translated on-the-fly by [Rosetta](/source/Rosetta_(software)); they will not run on Mac OS X 10.7 Lion and later as Rosetta is no longer part of the OS.

### iOS

Apple has used the same binary format as Universal Binaries for [iOS](/source/IOS) applications by default on multiple occasions of architectural co-existence: around 2010 during the armv6-armv7-armv7s transition and around 2016 during the armv7-arm64 transition. The [App Store](/source/App_Store) automatically thins the binaries. No trade names were derived for this practice, as it is only a concern of the developer.[8]

### Universal 2

Mac transition to Apple silicon Apple silicon (M series) ARM architecture family Universal 2 binary Rosetta 2 Developer Transition Kit v t e

On June 22, 2020, Apple announced a two-year permanent transition from [Intel](/source/Intel) [x86-64](/source/X86-64)-based processors to [ARM64](/source/AArch64)-based [Apple silicon](/source/Apple_silicon) beginning with [macOS Big Sur](/source/MacOS_Big_Sur) in late 2020.[9] To aid in this transition, a new Universal 2 binary was introduced, with both [x86-64](/source/X86-64) and ARM64 code packaged in the multi-architecture binary format, to enable applications to be run on either x86-64-based processors or ARM64-based processors.[5]

## Tools

The main tool for handling (creating or splitting) universal binaries is the lipo command found in [Xcode](/source/Xcode). The [file](/source/File_(command)) command on macOS and several other [Unix-like](/source/Unix-like) systems can identify Mach-O universal binaries and report architecture support.[10] [Snow Leopard](/source/Mac_OS_X_Snow_Leopard)'s [System Profiler](/source/System_Profiler) provides this information on the *Applications* tab.

## See also

- [Apple–Intel architecture](/source/Apple%E2%80%93Intel_architecture)

- [Mac transition to Intel processors](/source/Mac_transition_to_Intel_processors)

- [Mac transition to Apple silicon](/source/Mac_transition_to_Apple_silicon)

- [Fat binary](/source/Fat_binary)

- [Rosetta (software)](/source/Rosetta_(software))

- [Xslimmer](/source/Xslimmer)

## References

1. **[^](#cite_ref-1)** ["Firefox 4 for Mac OS X: Under the Hood"](https://joshaas.wordpress.com/2010/11/10/firefox-4-for-mac-os-x-under-the-hood/). November 10, 2010. Retrieved March 3, 2017.

1. **[^](#cite_ref-2)** ["Mac OS X Universal Logo: Guidelines for Mac OS X Universal Logo Licenses"](https://developer.apple.com/softwarelicensing/agreements/pdf/universal_gdlns.pdf) (PDF). Apple Inc. June 2007. Retrieved October 18, 2013.

1. **[^](#cite_ref-3)** ["Mac OS X: 64-bit kernel frequently asked questions"](http://support.apple.com/kb/ht4287). Apple Inc. October 4, 2012. Retrieved October 18, 2013.

1. **[^](#cite_ref-4)** ["Does Mac OS X 10.7 "Lion" run on Macs with a 32-bit EFI? How does the performance of Mac OS X 10.7 "Lion" compare to Mac OS X 10.6 "Snow Leopard" in "real-world" tests? @ EveryMac.com"](https://everymac.com/mac-answers/os-x-lion-faq/os-x-lion-performance-compared-to-snow-leopard-32-bit-64-bit-efi.html). *everymac.com*. Kyle Media. Retrieved October 6, 2017.

1. ^ [***a***](#cite_ref-:0_5-0) [***b***](#cite_ref-:0_5-1) Axon, Samuel (June 22, 2020). ["This is Apple's roadmap for moving the first Macs away from Intel"](https://arstechnica.com/gadgets/2020/06/this-is-apples-roadmap-for-moving-the-first-macs-away-from-intel/). *Ars Technica*. Retrieved June 23, 2020.

1. **[^](#cite_ref-6)** ["Macintosh Products Guide: Universal Applications"](http://guide.apple.com/universal/). [Apple Computer](/source/Apple_Computer). Retrieved December 22, 2008.

1. **[^](#cite_ref-7)** ["Adobe Ships Creative Suite 3"](https://web.archive.org/web/20120708105901/http://www.adobe.com/aboutadobe/pressroom/pressreleases/200704/041607CS3Shipping.html). [Adobe Systems](/source/Adobe_Systems). April 16, 2007. Archived from [the original](http://www.adobe.com/aboutadobe/pressroom/pressreleases/200704/041607CS3Shipping.html) on July 8, 2012. Retrieved October 18, 2013.

1. **[^](#cite_ref-8)** ["lipo - iOS fat binaries and thinning out"](https://stackoverflow.com/questions/40996682/ios-fat-binaries-and-thinning-out). *Stack Overflow*.

1. **[^](#cite_ref-9)** Amadeo, Ron (June 22, 2020). ["Apple announces macOS 11, "Big Sur," with an emphasis on design"](https://arstechnica.com/gadgets/2020/06/apple-announces-macos-10-16-big-sur-with-entirely-new-interface/). *Ars Technica*. Retrieved June 23, 2020.

1. **[^](#cite_ref-10)** stany (September 6, 2005). ["Mac OS X: Trimming fat from Mach-O fat files"](http://www.theconsultant.net/2005/09/macosx-operating-on-fat-files/). theconsultant.net. Retrieved October 18, 2013.

## External links

- Apple [Developer Transition Resource Center](https://web.archive.org/web/20060314034806/http://developer.apple.com/transition/index.html)

- Apple [Universal Binary Programming Guidelines](https://web.archive.org/web/20050906001154/http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary.pdf)

- Apple [Universal Binary Introduction](https://web.archive.org/web/20090120170136/http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_intro/chapter_1_section_1.html)

v t e macOS History Architecture Built-in apps Server Software Versions Mac OS X Server 1.0 Public Beta 10.0 Cheetah 10.1 Puma 10.2 Jaguar 10.3 Panther 10.4 Tiger 10.5 Leopard 10.6 Snow Leopard OS X 10.7 Lion 10.8 Mountain Lion 10.9 Mavericks 10.10 Yosemite 10.11 El Capitan macOS 10.12 Sierra 10.13 High Sierra 10.14 Mojave 10.15 Catalina 11 Big Sur 12 Monterey 13 Ventura 14 Sonoma 15 Sequoia 26 Tahoe 27 Golden Gate Predecessors Classic Mac OS NeXTSTEP Rhapsody Applications Core applications App Store Automator Calculator Calendar Contacts Control Center Dictionary FaceTime Finder Game Center Grapher Home Mail Messages News Music Notes Notification Center Podcasts Photo Booth Photos Preview QuickTime Player Reminders Safari Shortcuts Siri Stickies TextEdit Time Machine Developer Tools Xcode Instruments Former Interface Builder Dashcode Quartz Composer Utilities Boot Camp (deprecated) ColorSync Configurator Disk Utility Font Book Keychain Access Script Editor System Settings Terminal VoiceOver Former Dashboard Front Row iChat iPhoto iSync iTunes history Sherlock Technologies, user interface AirDrop AppKit Apple File System Apple menu Apple Push Notification service AppleScript Aqua Audio Units AVFoundation Bonjour Bundle CloudKit Cocoa ColorSync Command key Core Animation Core Audio Core Data Core Foundation Core Image Core OpenGL Core Text Core Video Cover Flow CUPS Darwin Dock FileVault Fonts Foundation Gatekeeper Grand Central Dispatch icns iCloud Kernel panic Keychain launchd Liquid Glass Mach-O Menu extra Metal Mission Control Night Shift OpenCL Option key Preference Pane Property list Quartz Quick Look Rosetta Smart Folders Speakable items Spotlight Stacks System Integrity Protection Uniform Type Identifier Universal binary WebKit XNU XQuartz Deprecated HFS+ Discontinued ATSUI BootX Brushed metal Carbon Classic Environment Inkwell QuickTime Spaces Xgrid Category

---
Adapted from the Wikipedia article [Universal binary](https://en.wikipedia.org/wiki/Universal_binary) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Universal_binary?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
