Content deleted Content added
This is a comparison. Therefore I am moving the three formats most interesting to compare (Linux's, Windows's and Mac's) up to the top of the list and close enough to compare them. |
Guy Harris (talk | contribs) The processor declarations are by file, but multiple files can be combined into a multi-architecture binary, with different encapsulated files having different processor declarations (fat binary). |
||
(13 intermediate revisions by 11 users not shown) | |||
Line 1:
{{Short description|none}} <!-- This short description is INTENTIONALLY "none" - please see WP:SDNONE before you consider changing it! -->
{{Use dmy dates|date=December 2014}}
This is a comparison of binary [[executable]] [[file format]]s which, once loaded by a suitable executable [[Loader (computing)|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 [[Portable Executable|PE]] (on [[Microsoft Windows]]), [[Executable and Linkable Format|ELF]] (on [[Linux]] and most other versions of [[Unix]]), [[Mach-O]] (on [[macOS]] and [[iOS]]) and [[DOS MZ executable|MZ]] (on [[DOS]]).
{{sticky header}}
{| class="wikitable sortable"▼
{{sort-under}}
▲{| class="wikitable sortable sort-under sticky-header"
|-
! scope="col" | Format name
Line 11 ⟶ 14:
! scope="col" | [[Metadata]]{{efn|name=metadata}}
! scope="col" | [[Code signing|Digital signature]]
! scope="col" | [[String (computer science)|String
! scope="col" | [[Symbol table]]
! scope="col" | [[64-bit]]
Line 19 ⟶ 22:
! scope="row" | [[Executable and Linkable Format|ELF]]
| [[Unix-like]], [[OpenVMS]], [[BeOS]] <small>from R4 onwards</small>, [[Haiku_(operating_system)|Haiku]], [[SerenityOS]]
| style="text-align: center;" | none
| {{Yes}} by file
| {{Yes}}
| {{Yes}}
| {{
| {{Yes}}
| {{Yes}}<ref name=3elf>{{cite web|url=http://uw714doc.sco.com/en/man/html.3elf/elf_getarsym.3elf.html |title=(3elf) - Elf library routines |publisher=Uw714doc.sco.com |date=25 April 2004 |access-date=9 July 2012}}</ref>
Line 40 ⟶ 43:
| {{Yes}}
| {{No}}
| {{some|Only [[DOS MZ executable|MZ (DOS)]]<ref>[[Portable_Executable#History|History of Portable Executable]]</ref>}}
| {{
|-▼
! scope="row" | [[Portable Executable|PE32+]]▼
| [[Windows]] <small>(64-bit editions only)</small>▼
| style="text-align: center;" | <code>[[.EXE]]</code>▼
| {{Yes}} by file▼
| {{Yes}}▼
| {{Yes}}▼
| {{Yes}}▼
| {{Yes}}▼
| {{Yes}}▼
| {{Yes}}▼
| {{some|"Compiled Hybrid Portable Executable"}}
| {{Yes}}
|-
! scope="row" | [[Mach-O]]<ref name=macosx>{{cite web|url=https://developer.apple.com/library/mac/documentation/
| [[NeXTSTEP]], [[macOS]], [[iOS]], [[iPadOS]], [[watchOS]], [[tvOS]], [[visionOS]]
| style="text-align: center;" | none
| {{Yes}} by file or subfile of a [[Fat binary#NeXT's/Apple's multi-architecture binaries|multi-architecture binary]]
| {{Some}} <small>(limited to max. 256 sections)</small>
| {{Yes}}
Line 53 ⟶ 69:
| {{Yes}}
| {{Yes}}
| {{Yes}} ([[Fat binary#NeXT's/Apple's multi-architecture binaries|multi-architecture binary]])
▲| {{Yes}}
| {{No}}
|-
Line 280 ⟶ 296:
| [[MS-DOS 4.0 (multitasking)]], [[OS/2]], [[Windows]], [[HX DOS Extender]]
| style="text-align: center;" | <code>[[.EXE]]</code>
| {{No}} <small>([[Intel x86|x86]] only)</small>
| {{
| {{
| {{No}}
| {{No}}
| {{Yes}}▼
| {{No}}
| {{some|Only [[DOS MZ executable|MZ (DOS)]]<ref>[[New_Executable#DOS_stub|DOS stub of New Executable]]</ref>}}
| {{Yes}}
|-
Line 314 ⟶ 330:
| {{No}}
| {{No}}
▲| {{Yes}}
▲|-
▲! scope="row" | [[Portable Executable|PE32+]]
▲| [[Windows]] <small>(64-bit editions only)</small>
▲| style="text-align: center;" | <code>[[.EXE]]</code>
▲| {{Yes}} by file
▲| {{Yes}}
▲| {{Yes}}
▲| {{Yes}}
▲| {{Yes}}
▲| {{Yes}}
| {{Yes}}
|-
Line 411 ⟶ 414:
{{notelist|refs=
<ref name=metadata>
: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 [[
:In [[Java (programming language)|Java]], the [[
:In [[
:In the [[.NET
}}
|