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

Tietotekniikka