Executable and Linkable Format

**Executable and Linkable Format** lyhyesti **ELF** on yleinen tiedostomuoto suoritettaville ohjelmille, objektitiedostoille, jaetuille kirjastoille ja coredump-tiedostoille. Rakenteeltaan ELF on joustava, laajennettavissa oleva ja alustariippumaton tiedostomuoto.

ELF on määritelty System V ABI -määrittelyssä ja Tool Interface Standards (TIS) määrittelyssä: alkuperäisen ELF-muodon kehitti ja julkaisi Unix System Laboratories (USL).

## Tiedoston rakenne
ELF-tiedosto sisältää ELF-ylätunnisteen (), joka muun muassa määrittää onko ohjelma 32 vai 64-bittinen. ELF-ylätunnisteen jälkeen tiedostossa on ohjelman ylätunnistetaulukko (), itse ohjelma ja viimeiseksi ohjelman osuuksien ylätunnistetaulukko ().

### ELF-ylätunniste
ELF-ylätunniste määrittää onko ohjelma 32- vai 64-bittinen. Bittisyys vaikuttaa tietueiden offsettiin.

### Ohjelman ylätunniste
Ohjelman ylätunnistetaulukko kertoo, kuinka ohjelma tulee ladata muistiin.

### Osion ylätunniste

## Käyttökohteet
### Unixin kaltaiset alustat
ELF-muoto on korvannut vanhempia muotoja useilla alustoilla kuten a.out ja COFF-muodot Unixin kaltaisissa käyttöjärjestelmissä:
* Linux
* Solaris / Illumos
* IRIX
* FreeBSD
* NetBSD
* OpenBSD
* Redox
* DragonFly BSD
* Syllable
* HP-UX (pois lukien 32-bittiset PA-RISC-ohjelmat jotka jatkavat SOM-muodon käyttämistä)
* QNX Neutrino
* MINIX

### Ei-Unix -alustat
ELF on myös käytössä eräillä ei-Unix alustoilla kuten:
* OpenVMS, Itanium ja x86-64 versiot
* BeOS Revision 4 ja myöhemmät x86-pohjaisille tietokoneille (joissa se korvasi Portable Executable -muodon; PowerPC-versio pysyi Preferred Executable Format -muodossa)
* Haiku, avoimen lähdekoodin uudelleentoteutus BeOSista
* RISC OS
* Stratus VOS, PA-RISC ja x86 versioissa
* Windows 10 Anniversary Update using the Windows Subsystem for Linux.
* SkyOS
* Fuchsia OS
* Z/TPF
* HPE NonStop OS

### Pelikonsolit
Eräät pelikonsolit käyttävät ELF-muotoa:
* PlayStation Portable, PlayStation Vita, PlayStation 2, PlayStation 3, PlayStation 4
* GP2X
* Dreamcast
* Wii

### PowerPC

Muut alustat PowerPC-suorittimilla jotka käyttävät ELF-muotoa:
* AmigaOS 4, ELF on korvannut aiemman Extended Hunk Format (EHF) muodon, jota käytettiin PPC-suorittimella varustettujen laajennuskorttien kanssa
* MorphOS
* AROS

### Mobiililaitteet

Eräät käyttöjärjestelmät matkapuhelimille ja muille mobiililaitteille käyttävät ELF-muotoa:
* Symbian OS v9 käyttää E32Image -muotoa joka perustuu ELF-muodolle;
* Sony Ericsson, muun muassa W800i, W610, W300 ja niin edelleen
* Siemens, SGOLD ja SGOLD2 alustat: Siemens C65:stä S75:een ja BenQ-Siemens E71/EL71;
* Motorola, muun muassa E398, SLVR L7, v360, v3i (ja kaikki LTE2-puhelimet joissa on päivitys).
* Bada, esimerkiksi Samsung Wave S8500.
* Nokia puhelimet ja tabletit Maemo- tai Meego-käyttöjärjestelmällä kuten Nokia N900.
* Android käyttää ELF `.so` (shared object) kirjastoja Java Native Interfacelle. Android Runtime (ART) (oletuksena Android 5.0 "Lollipop" versiosta alkaen) kaikki sovellukset käännetään natiivisti ELF-binääreiksi asennuksen yhteydessä.

## Ohjelmia
* `[[readelf]]` ohjelma joka näyttää tietoa elf-tiedostoista.
* `elfutils` vaihtoehtoinen ohjelmapaketti GNU Binutilsin tilalle, joka on tehty erityisesti Linuxia varten.
* `elfdump` ohjelma joka näyttää tietoa elf-tiedostosta.
* `[[objdump]]` ohjelma jolla voidaan tarkastella monipuolisesti eri tietoja elf-tiedostoista ja muista binääriformaateista.
* `file` ohjelma joka näyttää tietoa elf-tiedostoista.

## Lähteet

## Aiheesta muualla
* Dokumentaatio