Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Fat binary
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
====NeXTSTEP Multi-Architecture Binaries==== Fat binaries were a feature of [[NeXT]]'s [[NeXTSTEP]]/[[OPENSTEP]] operating system, starting with NeXTSTEP 3.1. In NeXTSTEP, they were called "Multi-Architecture Binaries". Multi-Architecture Binaries were originally intended to allow software to be compiled to run both on NeXT's Motorola 68k-based hardware and on Intel [[IA-32]]-based [[IBM PC compatible|PC]]s running NeXTSTEP, with a single binary file for both platforms.<ref name="Tevanian-DeMoney-Enderby_Wiebe_Snyder_1995"/> It was later used to allow OPENSTEP applications to run on PCs and the various [[RISC]] platforms OPENSTEP supported. Multi-Architecture Binary files are in a special archive format, in which a single file stores one or more [[Mach-O]] subfiles for each architecture supported by the Multi-Architecture Binary. Every Multi-Architecture Binary starts with a structure ({{code|struct fat_header}}) containing two unsigned integers. The first integer ("magic") is used as a [[File format#Magic number|magic number]] to identify this file as a Fat Binary. The second integer ({{mono|nfat_arch}}) defines how many Mach-O Files the archive contains (how many instances of the same program for different architectures). After this header, there are ''{{mono|nfat_arch}}'' number of fat_arch structures ({{code|struct fat_arch}}). This structure defines the offset (from the start of the file) at which to find the file, the alignment, the size and the CPU type and subtype which the Mach-O binary (within the archive) is targeted at. The version of the [[GNU Compiler Collection]] shipped with the Developer Tools was able to [[cross-compilation|cross-compile]] source code for the different architectures on which [[NeXTStep]] was able to run. For example, it was possible to choose the target architectures with multiple '-arch' options (with the architecture as argument). This was a convenient way to distribute a program for NeXTStep running on different architectures. It was also possible to create libraries (e.g. using NeXTStep's {{mono|libtool}}) with different targeted object files.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)