Fat Binary

The English term fat binary (translated: Thickness binary ) means a computer program that can be modified to run on computers whose CPUs actually completely different instruction set architectures (English Instruction Set Architecture, in short: ISA) possess. This is achieved by the combination of several on the respective CPU types of executable programs in a suitably structured binary container file. The operating system is then responsible to load the program required for this container and execute it.

Apple

Fat binaries have been used, for example, when Apple switched to PowerPC 1994 of the CPUs of the 68k family. Many programs published in the transitional period contain machine code for both Macintosh computer with a CPU of the 68k family and for those with the new PowerPC.

For the transition from PowerPC CPUs to Intel CPUs from the Core Duo and the Core 2 Duo series in 2006, Apple is once again a fat binaries. However, these are now referred to as a Universal Binary, a format that makes theoretically the union of code for up to about four billion different possible architectures.

Linux

FatELF is a fat binary implementation for Linux and other Unix-like operating systems by Ryan C. Gordon. Powered FatELF is an extension of the ELF binary format. In addition to different CPU architectures with varying data word sizes ( eg 32 -bit or 64-bit systems ) or byte order can also add software platform variations are supported, such as different OS ABIs (or versions). This results in according to the developers following application scenarios:

  • Linux distributions need not be offered separately for different hardware architectures, the choice of the correct version is for users sometimes confusing. This also reduces the deployment and support costs for the distributor.
  • It can be in the operating system directory tree on separated directory / lib, / lib32 be omitted and / lib64.
  • Choosing the correct application file and program library is performed at a central location by the operating system rather than by unsafe shell skripte.
  • If the ELF ABI could change newly created software continue to be able to run on older systems.
  • It can be supplied web browser plug-ins that run directly on different platforms.
  • Application files for 64 - and 32 -bit architectures or for Linux and BSD variations can be combined into a single file.
  • The same installation partition can be used to boot from different hardware. A root file system, different kernels and hardware versions are possible.
  • It would facilitate the dissemination of commercial, prebuilt computer games on the Linux platform ( distribution across ) significantly and allow for longer-term use, eg via multiple distribution upgrade time.
  • An application that is deployed on a network drive or USB stick can be run on many different systems. This is portable applications and cloud computing images for heterogeneous systems more feasible.

A sample implementation for Ubuntu 9.04 is available (VM of a Ubuntu 9.04 with fat binary support). Integration into the Linux kernel is still pending.

Evidence

  • Binary format
327335
de