Executable and Linkable Format
From Wikipedia, the free encyclopedia
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.
Prípona súboru | žiadna, .o, .so |
---|---|
Tvorca | Unix System Laboratories |
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 Archivované 2007-03-18 na Wayback Machine
- free ELF object file access library Archivované 2007-05-20 na Wayback Machine
- 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 Archivované 2007-03-22 na Wayback Machine by Eric Youngdale (1995-05-01)
- A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux[nefunkčný odkaz] by Brian Raiter
- FreeBSD Handbook — Binary formats Archivované 2013-04-03 na Wayback Machine
- Description of the ELF binary format
- elf(5) manual page
- NetBSD ELF FAQ
- Sun's Linker and Libraries Guide
Wikiwand - on
Seamless Wikipedia browsing. On steroids.