Comparison of executable file formats
This is a comparison of binary executable file formats which, once loaded by a suitable executable loader, can be directly executed by the CPU rather than become interpreted by software. In addition to the binary application code, the executables may contain headers and tables with relocation and fixup information as well as various kinds of meta data. Among those formats listed, the ones in most common use are PE (on Microsoft Windows), ELF (on Linux and most other versions of Unix), Mach-O (on OS X and iOS) and MZ (on DOS).
Format name | Operating system | Filename extension | Explicit processor declarations | Arbitrary sections | Metadata[lower-alpha 1] | Digital signature | String table | Symbol table | 64-bit | Fat binaries | Can contain icon |
---|---|---|---|---|---|---|---|---|---|---|---|
OS/360 | OS/360 and VS/9 mainframe systems | none | No | No | No | No | No | Yes | Yes | No | No |
a.out | Unix-like | none | No | No | No | No | Yes[1] | Yes[1] | Extension | No | No |
COFF | Unix-like | none | Yes by file | Yes | No | No | Yes | Yes | Extension | No | No |
ECOFF | Ultrix, Tru64 UNIX, IRIX | none | Yes by file | Yes | No | No | Yes | Yes | Yes | No | No |
XCOFF | IBM AIX, BeOS, Mac OS | none | Yes by file | Yes | No | No | Yes | Yes[2] | Yes | No | No |
ELF | Unix-like | none | Yes by file | Yes | Yes | Yes[3] | Yes | Yes[4] | Yes | Extension[5] | Extension[6] |
Mach-O[7] | NeXTSTEP, OS X, iOS | none | Yes by section | Some (limited to max. 256 sections) | Yes | Yes | Yes | Yes | Yes | Yes | No |
SOM | HP-UX, MPE/ix | ? | Unknown | Unknown | No | No | Unknown | Yes | No | Unknown | No |
Amiga Hunk | AmigaOS | none | No | Yes | Yes | No | No | Yes | No | Yes | No |
PEF[8] | Mac OS | none | Yes by file | No | No | No | Yes | Yes | No | No | No |
CMD | CP/M-86, MP/M-86, Concurrent CP/M-86, Personal CP/M-86, S5-DOS, Concurrent DOS, Concurrent DOS 286, FlexOS, S5-DOS/ST, S5-DOS/MT, Concurrent DOS 386, Multiuser DOS, System Manager, REAL/32, DOS Plus | .CMD |
No (x86 only) | Yes | No | No | Extension | Extension | No | No | No |
FlexOS 186 | FlexOS 186, FlexOS 286, S5-DOS/ST, S5-DOS/MT, 4680 OS, FlexOS 386, 4690 OS | .186 |
No (186/188 and higher only) | Yes | No | No | Extension | Extension | No | No | No |
FlexOS 286 | FlexOS 286, S5-DOS/ST, S5-DOS/MT, 4680 OS, FlexOS 386, 4690 OS | .286 |
No (286 and higher only) | Yes | No | No | Extension | Extension | No | No | No |
CP/M-68K | CP/M-68K, Concurrent DOS 68K, FlexOS 68K | .68K |
No (68000 and higher only) | Yes | No | No | Unknown | Unknown | No | No | No |
COM (CP/M) | CP/M, MP/M, Concurrent CP/M, Personal CP/M | .COM |
No (8080/Z80 only) | Extension (BDOS 3 and higher only) | No | No | No | No | No | Extension | No |
COM (DOS) | DOS, OS/2, Windows (except for 64-bit editions), Concurrent CP/M-86 (BDOS 3.1 only), Concurrent DOS, Concurrent DOS 286, FlexOS, Concurrent DOS 386, Multiuser DOS, System Manager, REAL/32, DOS Plus | .COM |
No (x86 only) | No | Extension (Novell/Caldera VERSION etc.) | No | No | No | Extension | Extension | No |
MZ (DOS) | DOS, OS/2, Windows (except for 64-bit editions), Concurrent DOS 286, FlexOS, Concurrent DOS 386, Multiuser DOS, System Manager, REAL/32, DOS Plus | .EXE |
No (x86 only) | Yes | Extension(Novell/Caldera VERSION etc.) | No | Extension | Extension | Extension | No | No |
MZ (GEM) | GEM, ViewMAX | .APP/.ACC |
No (x86 only) | Yes | No | No | Unknown | Unknown | No | No | Unknown |
NE | MS-DOS 4.0 (multitasking), OS/2, Windows, HX DOS Extender | .EXE |
Unknown | Unknown | Unknown | No | Unknown | Unknown | No | No | Yes |
LE, (W3, W4) | OS/2 (2.0 and higher only), some DOS extenders | .EXE |
Yes by file (286 and higher only) | Yes | Yes | No | Yes | Yes | No | No | Yes |
LX | OS/2 (2.0 and higher only), some 32-bit DOS extenders | .EXE |
Yes by file | Yes | Yes | No | Yes | Yes[9] | No | No | Yes |
PE | Windows, ReactOS, HX DOS Extender, BeOS (R3 and higher only) | .EXE |
Yes by file | Yes | Yes | Yes[10] | Yes | Yes | No | No | Yes |
PE32+ | Windows (64-bit editions only) | .EXE |
Yes by file | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes |
PIM/XIP | PalmDOS (MINIMAX applications only) | .PIM/.XIP |
No (x86 only) | Yes | No | No | No | No | No | No | No |
DL | MS-DOS System Manager applications (HP LX series only) | .EXM |
No (186/188 and higher only) | Yes | No | No | No | No | No | No | No |
MP | Phar Lap DOS extenders | .EXP |
Unknown (286 and higher only) | Yes | No | No | Unknown | Unknown | No | No | No |
P2 | Phar Lap 16-bit DOS extenders | .EXP |
Unknown (286 and higher only) | Yes | No | No | Unknown | Unknown | No | No | No |
P3 | Phar Lap 32-bit DOS extenders | .EXP |
Unknown (386 and higher only) | Yes | No | No | Unknown | Unknown | No | No | No |
GEOS | PC/GEOS, Geoworks Ensemble, NewDeal Office, Breadbox Ensemble | .GEO |
Unknown (x86 only) | Unknown | Unknown | No | Unknown | Unknown | No | No | Unknown |
Notes
<templatestyles src="Reflist/styles.css" />
Cite error: Invalid <references>
tag; parameter "group" is allowed only.
<references />
, or <references group="..." />
References
<templatestyles src="Reflist/styles.css" />
Cite error: Invalid <references>
tag; parameter "group" is allowed only.
<references />
, or <references group="..." />
Cite error: <ref>
tags exist for a group named "lower-alpha", but no corresponding <references group="lower-alpha"/>
tag was found, or a closing </ref>
is missing
- ↑ 1.0 1.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.