Přeskočit na obsah

Executable and Linkable Format

Z Wikipedie, otevřené encyklopedie
Tento článek je o souborovém formátu. O mytologické bytosti pojednává článek Elf.

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živatelé přesvědčení, že ELF překonává 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 následované souborovými daty. Souborová data mohou obsahovat:

  • Hlavičku tabulky programu, popisující žádný nebo více segmentů
  • Hlavičku tabulky sekce, popisující žádný nebo více sekcí
  • Údaje odkazované položkami z hlavičky tabulky programu nebo sekce

Každý byte 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 informace o jednom nebo více ELF souborech. GNU 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.

Využití formátu ELF

Formát ELF nahradil některé starší spustitelné soubory v různých aplikačních prostředích. Je využíván v operačních systémech:


V úvodu zmíněných herních konzolích. Dále je používán u některých operačních systémů pro mobilní zařízení. Například:

FatELF

FatELF je rozšířením binárního formátu ELF. Přidává Fat binární funkce. FatELF je formátem vyvinutým pro Linux a další verze Unixových operačních systémů. Navíc kromě oddělení architektury CPU (pořadí bytů, velikost slova (32 bit x 64 bit), instrukční sada CPU atd.), je potenciální výhodou oddělení softwarových platforem např. soubory, které podporují několik verzí ABI jádra.

Související články

Šablona:Pahýl - počítače