Preskočiť na obsah

Executable and Linkable Format

z Wikipédie, slobodnej encyklopédie
ELF
Prípona súboružiadna, .o, .so
TvorcaUnix System Laboratories

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

[upraviť | upraviť zdroj]

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.

  • 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.

Externé odkazy

[upraviť | upraviť zdroj]