Executable and Linkable Format
Executable and Linkable Format (zkratka ELF) je v informatice standardní souborový formát pro uložení spustitelných souborů, linkovatelných objektů, dynamických (sdílených) knihoven a ladících výpisů (core dumps). ELF formát je poměrně rozšířený, v současnosti ho využívají operační systémy jako Linux, Solaris, IRIX, FreeBSD, NetBSD, OpenBSD a další. ELF formát se také objevuje u konzolí (PlayStation 2, PlayStation Portable a PlayStation 3) Formát byl původně vyvinut v Unix System Laboratories pro operační systém UNIX System V.
V současnosti formát ELF nahradil formáty spustitelných souborů jako jsou a.out nebo COFF. Protože jiné formáty jsou závislé na platformě nebo méně rozšiřitelné než ELF, jsou někteří užívatelé přesvědčení, že ELF překonáva jiné formáty. ELF je také použit v operačním systému OpenVMS, nevycházejícím z UNIXu ve verzi pro Itanium procesor, stejně jako nahrazuje Portable Executable na systému BeOS Revision 4 a starších pro x86 počítače (PPC verze zůstala při formátu Preferred Executable Format a nikdy nepoužívala Portable Executable), který také není založený na UNIXu.
Popis formátu ELF
Soubor ELF obsahuje hlavičku, následovanou žádným, jedním nebo více segmenty a žádnou, jednou nebo více sekcí. Segmenty obsahují informace nutné pro běh programového kódu, sekce obsahují informace pro linker (spojování) a realokace (přepočet adresy) objektů, které jsou umístěny v paměti počítače. Jednotlivé segmenty a sekce jsou uvedeny v tabulce hlavičky ELF souboru.
Každý ELF soubor se tedy skladá z jedné ELF hlavičky nasledované souborovými daty. Souborová data mohou obsahovat:
- Hlavičku tabuľky programu, popisující žádný nebo více segmentů
- Hlavičku tabuľky sekce, popisující žádný nebo více sekcí
- Údaje odkazované položkami z hlavičky tabuľky programu nebo sekce
Každý bajt v celém souboru je zahrnutý v maximálně jedné sekci najednou, ale v souboru se mohou nacházet také bajty-sirotci, které nejsou pokryté žádnou sekcí. V typickém případě Unixového spustitelného souboru je jedna nebo více sekcí zahrnutá v jednom segmentu.
Nástroje
- readelf je Unixová binární utilita, která zobrazuje informáce o jednom nebo více ELF souborech. GPL implementace je poskytována v GNU Binutils.
- elfdump je příkaz v Solarisu na prohlížení informací v ELF souboru.
- objdump poskytuje široký rozsah informací o ELF souborech a jiných objektových formátech.