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!
{{Short description|Combined executable file for multiple processor types or operating systems}} {{Distinguish|Portable executable|Portable application}} {{Use dmy dates|date=April 2019|cs1-dates=y}} {{Use list-defined references|date=December 2021}} A '''fat binary''' (or '''multiarchitecture binary''') is a computer [[executable program]] or [[library (computing)|library]] which has been expanded (or "fattened") with code native to multiple [[instruction set]]s which can consequently be run on multiple processor types.<ref name="Devanbu-Fong-Stubblebine_1998"/> This results in a file larger than a normal one-architecture binary file, thus the name. The usual method of implementation is to include a version of the [[machine code]] for each instruction set, preceded by a single [[entry point]] with code compatible with all operating systems, which executes a jump to the appropriate section. Alternative implementations store different executables in different [[Fork (file system)|forks]], each with its own entry point that is directly used by the operating system. The use of fat binaries is not common in [[operating system]] software; there are several alternatives to solve the same problem, such as the use of an [[installer]] program to choose an architecture-specific binary at install time (such as with [[Android (operating system)|Android]] multiple [[Android Package|APK]]s), selecting an architecture-specific binary at runtime (such as with [[Plan 9 from Bell Labs|Plan 9]]'s [[union directory (Plan 9)|union directories]] and {{anchor|GNUstep fat bundle}}[[GNUstep]]'s fat bundles),<ref name="Pero_2008"/><ref name="GNUstep_2009"/> distributing software in [[source code]] form and [[compiler|compiling]] it in-place, or the use of a [[virtual machine]] (such as with [[Java Virtual Machine|Java]]) and [[just-in-time compilation]].<!-- Commenting the following statement out: All of these solutions have their downsides however, notably if the user attempts to move such a program to a new machine during an upgrade. Neither a source distribution nor a virtual machine would have a problem moving to a new machine assuming a compiler or virtual machine implementation was available for the new machine. -->
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)