Executable and Linkable Format

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

Súborové formáty