**Executable and Linking Format** (**ELF**, pôvodne nazývaný **Extensible Linking Format**) je spoločný štandardný súborový formát pre spúštateľné súbory, objektový kód, zdieľané knižnice a core dumpy. Prvýkrát publikovaný v špecifikácii aplikačného binárneho rozhrania System V a neskôr v Tool Interface Standard, bol rýchlo prijatý medzi rôznymi dodávateľmi Unix systémov. V roku 1999 bol zvolený ako štandardný binárny súborový formát pre Unix a systémy na báze Unixu projektom 86open.

V dnešnej dobe ELF formát nahradil formáty spúšťateľných súborov ako sú a.out a COFF v operačných systémoch Linux, Solaris, IRIX, FreeBSD, NetBSD a OpenBSD (DragonFly BSD bol odštiepený od FreeBSD po prechode na ELF). Pretože iné formáty sú proprietárne, platformovo-špecifické alebo menej rozširovateľné než ELF, tak sú niektorí užívatelia presvedčení, že ELF prekonáva ostatné formáty, iní užívatelia ho zas môžu považovať za konkurenciu ostatných formátov. ELF je tiež použitý v operačnom systéme OpenVMS nevychádzajúcom z UNIXu v jeho verzii pre Itanium procesor, rovnako aj nahrádza Portable Executable na systéme BeOS Revision 4 a neskorších pre x86 počítače (PPC verzia zostala pri formáte Preferred Executable Format a nikdy nepoužívala Portable Executable), ktorý rovnako nie je založený na UNIXe. PlayStation Portable, PlayStation 2 a PlayStation 3 konzoly taktiež používajú ELF ako ich spúštateľný súborový formát.

Rozloženie súboru ELF
---------------------

Každý ELF súbor sa skladá z jednej ELF hlavičky, nasledovanej súborovými dátami. Súborové dáta môžu obsahovať:

* Hlavičku tabuľky programu, popisujúcu nulu alebo viacero segmentov
* Hlavičku tabuľky sekcie, popisujúcu nulu alebo viacero sekcií
* Údaje odkazované položkami z hlavičky tabuľky programu alebo sekcie

Segmenty obsahujú informácie, ktoré sú nutné pre beh programového súboru a sekcie obsahujú dôležité údaje pre linkovanie a relokáciu. Každý bajt v celom súbore je zahrnutý v maximálne jednej sekcií naraz, ale v súbore sa môžu nachádzať aj bajty-siroty, ktoré nie sú pokryté žiadnou sekciou. V normálnom prípade Unixového spúšťateľného súboru je jedna alebo viac sekcií zahrnutá v jednom segmente.

Nástroje
--------

* `readelf` je Unixová binárna utilita, ktorá zobrazuje informácie o jednom alebo viacerých ELF súboroch. GPL implementácia je poskytnutá v GNU Binutils.
* `elfdump` je príkaz v Solarise na prezeranie informácií v ELF súbore.
* `objdump` poskytuje široký rozsah informácií o ELF súboroch a iných objektových formátoch.

Pozri aj
--------

* Portable Executable (PE)
* DWARF
* Mach-O

Externé odkazy
--------------

* Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2 (May 1995)
* ELF for the ARM Architecture
* ELF-64 Object File Format Version 1.5 Draft 2 (May 1998)
* Elf library routines
* free ELF object file access library
* ELFIO: a C++ library for reading and generating files in the ELF binary format.
* *How To Write Shared Libraries* by Ulrich Drepper (2006-08-20)
* *An unsung hero: The hardworking ELF* by Peter Seebach (2005-12-20)
* *LibElf and GElf — A Library to Manipulate ELF Files* by Neelakanth Nadgir (August 2001)
* *The ELF Object File Format by Dissection* by Eric Youngdale (1995-05-01)
* *A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux* by Brian Raiter
* FreeBSD Handbook — Binary formats
* Description of the ELF binary format
* elf(5) manual page
* NetBSD ELF FAQ
* Sun's Linker and Libraries Guide