Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
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 being 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 macOS and iOS) and MZ (on DOS).

Format nameOperating systemFilename extensionExplicit processor declarationsArbitrary sectionsMetadataDigital signatureString tableSymbol table64-bitFat binariesCan contain icon
ELFUnix-like, OpenVMS, BeOS from R4 onwards, Haiku, SerenityOSnoneYes by fileYesYesExtensionYesYesYesExtensionExtension
PEWindows, ReactOS, HX DOS Extender, BeOS (R3 only).EXEYes by fileYesYesYesYesYesNoOnly MZ (DOS)Yes
PE32+Windows (64-bit editions only).EXEYes by fileYesYesYesYesYesYes"Compiled Hybrid Portable Executable"Yes
Mach-ONeXTSTEP, macOS, iOS, watchOS, tvOSnoneYes by sectionSome (limited to max. 256 sections)YesYesYesYesYesYesNo
OS/360OS/360 and successors, and VS/9, mainframe operating systemsnoneNoNoNoNoNoYesYesNoNo
GOFFIBM MVS and z/OS mainframe operating systemsnoneNoNoYesNoYesYesYesNoNo
a.outUnix-likenoneNoNoNoNoYesYesExtensionNoNo
COFFUnix-likenoneYes by fileYesNoNoYesYesExtensionNoNo
ECOFFUltrix, Tru64 UNIX, IRIXnoneYes by fileYesNoNoYesYesYesNoNo
XCOFFIBM AIX, BeOS, "classic" Mac OSnoneYes by fileYesNoNoYesYesYesNoNo
SOMHP-UX, MPE/ix?Un­knownUn­knownNoNoUn­knownYesNoUn­knownNo
Amiga HunkAmigaOSnoneNoYesYesNoNoYesNoYesNo
PEF"classic" Mac OS, BeOS (PPC only)noneYes by fileNoNoNoYesYesNoNoNo
CMDCP/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.CMDNo (x86 only)YesNoNoExtensionExtensionNoNoNo
FlexOS 186FlexOS 186, FlexOS 286, S5-DOS/ST, S5-DOS/MT, 4680 OS, FlexOS 386, 4690 OS.186No (186/188 and higher only)YesNoNoExtensionExtensionNoNoNo
FlexOS 286FlexOS 286, S5-DOS/ST, S5-DOS/MT, 4680 OS, FlexOS 386, 4690 OS.286No (286 and higher only)YesNoNoExtensionExtensionNoNoNo
CP/M-68KCP/M-68K, Concurrent DOS 68K, FlexOS 68K.68KNo (68000 and higher only)YesNoNoUn­knownUn­knownNoNoNo
COM (CP/M)CP/M, MP/M, Concurrent CP/M, Personal CP/M.COMNo (8080/Z80 only)Extension (BDOS 3 and higher only)NoNoNoNoNoExtensionNo
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.COMNo (x86 only)NoExtension (Novell/Caldera VERSION etc.)NoNoNoExtensionExtensionNo
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.EXENo (x86 only)YesExtension (Novell/Caldera VERSION etc.)NoExtensionExtensionExtensionNoNo
MZ (GEM)GEM, ViewMAX.APP/.ACCNo (x86 only)YesNoNoUn­knownUn­knownNoNoUn­known
NEMS-DOS 4.0 (multitasking), OS/2, Windows, HX DOS Extender.EXENo (x86 only)YesYesNoNoYesNoOnly MZ (DOS)Yes
LE, (W3, W4)OS/2 (2.0 and higher only), some DOS extenders.EXEYes by file (286 and higher only)YesYesNoYesYesNoNoYes
LXOS/2 (2.0 and higher only), some 32-bit DOS extenders.EXEYes by fileYesYesNoYesYesNoNoYes
PIM/XIPPalmDOS (MINIMAX applications only).PIM/.XIPNo (x86 only)YesNoNoNoNoNoNoNo
DLMS-DOS System Manager applications (HP LX series only).EXMNo (186/188 and higher only)YesNoNoNoNoNoNoNo
MPPhar Lap DOS extenders.EXPUn­known (286 and higher only)YesNoNoUn­knownUn­knownNoNoNo
P2Phar Lap 16-bit DOS extenders.EXPUn­known (286 and higher only)YesNoNoUn­knownUn­knownNoNoNo
P3Phar Lap 32-bit DOS extenders.EXPUn­known (386 and higher only)YesNoNoUn­knownUn­knownNoNoNo
GEOSPC/GEOS, Geoworks Ensemble, NewDeal Office, Breadbox Ensemble.GEOUn­known (x86 only)Un­knownUn­knownNoUn­knownUn­knownNoNoUn­known

Notes

References

  1. Metadata is casually used to describe the controlling data used in software architectures that are more abstract or configurable. Most executable file formats include what may be termed "metadata" that specifies certain, usually configurable, behavioral runtime characteristics. However, it is difficult if not impossible to precisely distinguish program "metadata" from general aspects of stored-program computing architecture; if the machine reads it and acts on it, it is a computational instruction, and the prefix "meta" has little significance. In Java, the Java class file format contains metadata used by the Java compiler and the Java virtual machine to dynamically link classes and to support reflective programming (reflection). The Java Platform, Standard Edition since J2SE 5.0 has included a metadata facility to allow additional annotations that are used by development tools. In DOS, the COM file format does not normally include metadata, while the EXE file and Windows Portable Executable (PE) formats do. These metadata can include the company that published the program, the date the program was created, the version number, and more. In the .NET framework executable format, extra metadata is included to allow reflection at runtime. /wiki/Runtime_(program_lifecycle_phase)

  2. "elfsign – Freecode". Freshmeat.net. Retrieved 9 July 2012. http://freshmeat.net/projects/elfsign/

  3. "(3elf) - Elf library routines". Uw714doc.sco.com. 25 April 2004. Retrieved 9 July 2012. http://uw714doc.sco.com/en/man/html.3elf/elf_getarsym.3elf.html

  4. "FatELF: Universal Binaries for Linux". Icculus.org. Retrieved 9 July 2012. http://icculus.org/fatelf/

  5. "ElfIcon: Icons for ELF files". Compholio.com. Retrieved 9 July 2012. http://www.compholio.com/elfres/

  6. "Windows Authenticode Portable Executable Signature Format". Microsoft. 29 August 2008. Retrieved 9 July 2012. http://www.microsoft.com/whdc/winlogo/drvsign/Authenticode_PE.mspx

  7. History of Portable Executable /wiki/Portable_Executable#History

  8. "Mac OS X ABI Mach-O File Format Reference". Apple Inc. 4 February 2009. Retrieved 9 July 2012. https://developer.apple.com/documentation/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html#//apple_ref/doc/uid/20001298-BAJIHABI

  9. "a.out(5) - FreeBSD Man Pages". Freebsd.org. 10 June 2010. Retrieved 9 July 2012. http://www.freebsd.org/cgi/man.cgi?query=a.out&sektion=5

  10. "a.out(5) - FreeBSD Man Pages". Freebsd.org. 10 June 2010. Retrieved 9 July 2012. http://www.freebsd.org/cgi/man.cgi?query=a.out&sektion=5

  11. "Files Reference – XCOFF Object File Format". IBM. http://pic.dhe.ibm.com/infocenter/aix/v7r1/topic/com.ibm.aix.files/doc/aixfiles/XCOFF.htm

  12. "MPW Command Reference - DumpPEF". Apple Inc. Archived from the original on 12 May 2008. https://web.archive.org/web/20080512065331/http://developer.apple.com/tools/mpw-tools/commandref/dumppef.html

  13. DOS stub of New Executable /wiki/New_Executable#DOS_stub

  14. "LX - Linear eXecutable Module Format Description". 3 June 1992. Retrieved 7 July 2019. http://www.oldlinux.org/Linux.old/study/sabre/os/files/Executables/LX.txt