Spustitelný a propojitelný formát - Executable and Linkable Format - Wikipedia
Přípona názvu souboru | žádný, .axf, .zásobník, .Elf, .Ó, .prx, . obláček, .ko, .mod a .tak |
---|---|
Magické číslo | 0x7F 'E' 'L' 'F' |
Vyvinul | Unix System Laboratories[1]:3 |
Typ formátu | Binární, spustitelný, objekt, sdílená knihovna, skládka jádra |
Kontejner pro | Mnoho spustitelných binárních formátů |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Elf-layout--en.svg/260px-Elf-layout--en.svg.png)
v výpočetní, Spustitelný a propojitelný formát (ELF, dříve pojmenovaný Extensible Linking Format), je běžný standard formát souboru pro spustitelný soubory, kód objektu, sdílené knihovny, a skládky jádra. Nejprve publikováno ve specifikaci pro binární rozhraní aplikace (ABI) z Unix verze operačního systému s názvem System V Release 4 (SVR4),[2] a později ve standardu nástroje rozhraní,[1] bylo rychle přijato mezi různými prodejci Unix systémy. V roce 1999 byl vybrán jako standardní formát binárního souboru pro Unix a Unixový systémy zapnuty x86 procesory podle 86otevření projekt.
Podle návrhu je formát ELF flexibilní, rozšiřitelný a napříč platformami. Například podporuje různé endiannesses a velikosti adres, takže to nevylučuje žádné konkrétní centrální procesorová jednotka (CPU) nebo architektura sady instrukcí. To umožnilo jeho přijetí mnoha různými operační systémy na mnoha různých hardwaru platformy.
Rozložení souboru
Každý soubor ELF je tvořen jednou hlavičkou ELF, následovanou daty souboru. Data mohou zahrnovat:
- Tabulka záhlaví programu, popisující nula nebo více paměťové segmenty
- Tabulka záhlaví sekcí popisující nula nebo více sekcí
- Data označovaná položkami v tabulce záhlaví programu nebo tabulce záhlaví sekce
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/ELF_Executable_and_Linkable_Format_diagram_by_Ange_Albertini.png/440px-ELF_Executable_and_Linkable_Format_diagram_by_Ange_Albertini.png)
Segmenty obsahují informace, které jsou potřebné pro doba běhu spuštění souboru, zatímco oddíly obsahují důležitá data pro propojení a přemístění. Žádný byte v celém souboru může být vlastněna nejvýše jednou sekcí a mohou se vyskytnout osiřelé bajty, které jsou u jakékoli části neznámé.
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 3e 00 01 00 00 00 c5 48 40 00 00 00 00 00 |..> ...... H @ .....|
Příklad hexdump záhlaví souboru ELF[3]
Záhlaví souboru
Záhlaví ELF definuje, zda se má použít 32-bit nebo 64-bit adresy. Záhlaví obsahuje tři pole, která jsou ovlivněna tímto nastavením, a kompenzuje další pole, která za nimi následují. Záhlaví ELF je 52 nebo 64 bajtů dlouhé pro 32bitové a 64bitové binární soubory.
Ofset | Velikost (bajty) | Pole | Účel | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32-bit | 64-bit | 32-bit | 64-bit | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x00 | 4 | e_ident [EI_MAG0] přes e_ident [EI_MAG3] | 0x7F následován ELF (45 4c 46 ) v ASCII; tyto čtyři bajty tvoří magické číslo. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x04 | 1 | e_ident [EI_CLASS] | Tento bajt je nastaven na buď 1 nebo 2 znamená 32- nebo 64bitový formát. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x05 | 1 | e_ident [EI_DATA] | Tento bajt je nastaven na buď 1 nebo 2 znamenat malý nebo velký endianismus, resp. To ovlivňuje interpretaci vícebajtových polí počínaje offsetem 0x10 . | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x06 | 1 | e_ident [EI_VERSION] | Nastaven na 1 pro původní a aktuální verzi ELF. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x07 | 1 | e_ident [EI_OSABI] | Identifikuje cílový operační systém ABI.
Často je nastavena na | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x08 | 1 | e_ident [EI_ABIVERSION] | Dále specifikuje verzi ABI. Jeho interpretace závisí na cílovém ABI. Linuxové jádro (alespoň po 2.6) nemá žádnou definici,[5] pro staticky spojené spustitelné soubory je tedy ignorován. V takovém případě jsou offset a velikost EI_PAD 8 .glibc 2.12+ v případě e_ident [EI_OSABI] == 3 považuje toto pole za ABI verzi dynamický linker:[6] definuje seznam funkcí dynamického linkeru,[7] zachází e_ident [EI_ABIVERSION] jako úroveň funkcí požadovaná sdíleným objektem (spustitelná nebo dynamická knihovna) a odmítá ji načíst, pokud je požadována neznámá funkce, tj. e_ident [EI_ABIVERSION] je větší než největší známá funkce.[8] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x09 | 7 | e_ident [EI_PAD] | aktuálně nepoužívané, by měly být vyplněny nulami. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x10 | 2 | e_type | Určuje typ souboru objektu.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x12 | 2 | e_machine | Určuje cíl architektura sady instrukcí. Některé příklady jsou:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x14 | 4 | e_verze | Nastaven na 1 pro původní verzi ELF. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x18 | 4 | 8 | e_entry | Toto je adresa paměti Vstupní bod odkud se proces spustí. Toto pole je buď 32 nebo 64 bitů dlouhé v závislosti na formátu definovaném dříve. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x1C | 0x20 | 4 | 8 | e_phoff | Odkazuje na začátek tabulky záhlaví programu. Obvykle následuje záhlaví souboru okamžitě, čímž se provede posun 0x34 nebo 0x40 pro 32bitové a 64bitové spustitelné soubory ELF. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x20 | 0x28 | 4 | 8 | e_shoff | Odkazuje na začátek tabulky záhlaví sekce. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x24 | 0x30 | 4 | e_flags | Interpretace tohoto pole závisí na cílové architektuře. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x28 | 0x34 | 2 | e_ehsize | Obsahuje velikost této hlavičky, obvykle 64 bajtů pro 64bitový formát a 52 bajtů pro 32bitový formát. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x2A | 0x36 | 2 | e_phentsize | Obsahuje velikost položky tabulky záhlaví programu. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x2C | 0x38 | 2 | e_phnum | Obsahuje počet záznamů v tabulce záhlaví programu. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x2E | 0x3A | 2 | e_shentsize | Obsahuje velikost položky tabulky záhlaví sekce. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x30 | 0x3C | 2 | e_shnum | Obsahuje počet položek v tabulce záhlaví sekce. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x32 | 0x3E | 2 | e_shstrndx | Obsahuje index položky tabulky záhlaví sekce, která obsahuje názvy sekcí. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x34 | 0x40 | Konec záhlaví ELF (velikost) |
Záhlaví programu
Tabulka záhlaví programu říká systému, jak vytvořit obraz procesu. Najde se při offsetu souboru e_phoff, a skládá se z e_phnum položky, každý s velikostí e_phentsize. Uspořádání se mírně liší v 32-bit ELF vs. 64-bit ELF, protože p_flags jsou v jiném umístění struktury z důvodů zarovnání. Každá položka je strukturována jako:
Ofset | Velikost (bajty) | Pole | Účel | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32-bit | 64-bit | 32-bit | 64-bit | ||||||||||||||||||||||||||||||||||||||
0x00 | 4 | p_type | Určuje typ segmentu.
PT_LOOS na PT_HIOS (PT_LOPROC na PT_HIPROC) je inkluzivní vyhrazené rozsahy pro sémantiku specifickou pro operační systém (procesor). | ||||||||||||||||||||||||||||||||||||||
0x04 | 4 | p_flags | Příznaky závislé na segmentu (pozice pro 64bitovou strukturu). | ||||||||||||||||||||||||||||||||||||||
0x04 | 0x08 | 4 | 8 | p_offset | Odsazení segmentu v obraze souboru. | ||||||||||||||||||||||||||||||||||||
0x08 | 0x10 | 4 | 8 | p_vaddr | Virtuální adresa segmentu v paměti. | ||||||||||||||||||||||||||||||||||||
0x0C | 0x18 | 4 | 8 | p_paddr | V systémech, kde je důležitá fyzická adresa, vyhrazeno pro fyzickou adresu segmentu. | ||||||||||||||||||||||||||||||||||||
0x10 | 0x20 | 4 | 8 | p_filesz | Velikost segmentu v obraze souboru v bajtech. Může být 0. | ||||||||||||||||||||||||||||||||||||
0x14 | 0x28 | 4 | 8 | p_memsz | Velikost segmentu v paměti v bajtech. Může být 0. | ||||||||||||||||||||||||||||||||||||
0x18 | 4 | p_flags | Příznaky závislé na segmentu (pozice pro 32bitovou strukturu). | ||||||||||||||||||||||||||||||||||||||
0x1C | 0x30 | 4 | 8 | p_align | 0 a 1 neurčit žádné zarovnání. Jinak by měla být kladná, integrální síla 2, s p_vaddr rovnítko p_offset modul p_align. | ||||||||||||||||||||||||||||||||||||
0x20 | 0x38 | Konec záhlaví programu (velikost) |
Záhlaví sekce
Ofset | Velikost (bajty) | Pole | Účel | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32-bit | 64-bit | 32-bit | 64-bit | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x00 | 4 | sh_name | Posun k řetězci v .ststab sekce, která představuje název této sekce. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x04 | 4 | sh_type | Určuje typ této hlavičky.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x08 | 4 | 8 | sh_flags | Identifikuje atributy sekce.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x0C | 0x10 | 4 | 8 | sh_addr | Virtuální adresa sekce v paměti, pro sekce, které jsou načteny. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x10 | 0x18 | 4 | 8 | sh_offset | Odsazení řezu v obraze souboru. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x14 | 0x20 | 4 | 8 | sh_size | Velikost sekce v obraze souboru v bajtech. Může být 0. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x18 | 0x28 | 4 | sh_link | Obsahuje index sekce přidružené sekce. Toto pole se používá pro několik účelů, v závislosti na typu sekce. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x1C | 0x2C | 4 | sh_info | Obsahuje další informace o sekci. Toto pole se používá pro několik účelů, v závislosti na typu sekce. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x20 | 0x30 | 4 | 8 | sh_addralign | Obsahuje požadované zarovnání sekce. Toto pole musí být mocninou dvou. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x24 | 0x38 | 4 | 8 | sh_entsize | Obsahuje velikost každé položky v bajtech pro oddíly, které obsahují položky pevné velikosti. Jinak toto pole obsahuje nulu. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x28 | 0x40 | Konec záhlaví sekce (velikost) |
Nástroje
sám sebe
je binární nástroj Unix, který zobrazuje informace o jednom nebo více souborech ELF. A svobodný software implementaci zajišťuje GNU Binutils.elfutils
poskytuje alternativní nástroje GNU Binutils čistě pro Linux.[10]elfdump
je příkaz pro prohlížení informací ELF v souboru ELF, který je k dispozici v systémech Solaris a FreeBSD.objdump
poskytuje širokou škálu informací o souborech ELF a dalších formátech objektů.objdump
používá Knihovna deskriptorů binárních souborů jako back-end pro strukturování dat ELF.- Unix
soubor
obslužný program může zobrazit některé informace o souborech ELF, včetně architektura sady instrukcí pro které je určen kód v přemístitelném, spustitelném nebo sdíleném souboru objektu, nebo na kterém je ELF skládka jádra byl vyroben.
Aplikace
Unixové systémy
![]() |
Formát ELF nahradil starší spustitelné formáty v různých prostředích. Nahradil a.out a COFF formáty v Unixový operační systémy:
- Linux
- Solaris / Illumos
- IRIX
- FreeBSD[11]
- NetBSD
- OpenBSD
- Redox
- DragonFly BSD
- Slabika
- HP-UX (s výjimkou 32bitových programů PA-RISC, které se nadále používají SOM )
- QNX Neutrino
- MINIX[12]
Přijetí mimo Unix
ELF také zaznamenal určité přijetí v operačních systémech jiných než Unix, například:
- OpenVMS, ve své Itanium a amd64 verze[13]
- BeOS Revize 4 a novější pro x86 založené počítače (kde nahradil Přenosný spustitelný soubor formát; the PowerPC verze zůstala Preferovaný spustitelný formát )
- Haiku, reimplementace open source systému BeOS
- RISC OS[14]
- Stratus VOS, ve verzích PA-RISC a x86
- Aktualizace k výročí Windows 10 za použití Subsystém Windows pro Linux.[15][16]
- SkyOS
- Fuchsia OS
- Z / TPF
- OS HPE NonStop[17]
- Deos
Herní konzole
Některé herní konzole také používají ELF:
- PlayStation Portable,[18] PlayStation Vita, Playstation 2, PlayStation 3, PlayStation 4
- GP2X
- Obsazení snů
- Hrací kostka
- Wii
- Wii U
PowerPC
Ostatní (operační) systémy běžící na PowerPC kteří používají ELF:
- AmigaOS 4, spustitelný soubor ELF nahradil předchozí Extended Hunk Format (EHF), který byl použit na Amigasu vybaveném rozšiřujícími kartami procesoru PPC.
- MorphOS
- AROS
Mobilní telefony
Některé operační systémy pro mobilní telefony a mobilní zařízení používají ELF:
- Symbian OS v9 používá E32Image[19] formát, který je založen na formátu souboru ELF;
- Sony Ericsson například W800i, W610, W300, atd.
- Siemens, platformy SGOLD a SGOLD2: od Siemens C65 na S75 a BenQ-Siemens E71 /EL71;
- Motorola například E398, SLVR L7, v360, v3i (a veškerý telefon LTE2, který má opravu použitou).
- Bada například Samsung Wave S8500.
- Nokia telefony nebo tablety se systémem Maemo nebo Meego OS, například Nokia N900.
- Android používá ELF .tak (sdílený objekt[20]) knihovny pro Nativní rozhraní Java. S Android Runtime (ART), výchozí od Android 5.0 „Lollipop“, všechny aplikace jsou při instalaci kompilovány do nativních binárních souborů ELF.
Některé telefony mohou spouštět soubory ELF pomocí a náplast to dodává montážní kód na hlavní firmware, což je funkce známá jako Balíček ELF v podzemí modding kultura. Formát souboru ELF se také používá s Atmel AVR (8 bitů), AVR32[21]a s Texas Instruments MSP430 architektury mikrokontrolérů. Některé implementace Otevřete firmware může také načíst soubory ELF, zejména Jablko implementace používaná téměř ve všech PowerPC stroje, které společnost vyráběla.
Specifikace
- Obecný:
- Binární rozhraní aplikace System V Vydání 4.1 (1997-03-18)
- Aktualizace ABI systému V (Říjen 2009)
- AMD64:
- PAŽE:
- IA-32:
- IA-64:
- M32R:
- Dodatek M32R ELF ABI Verze 1.2 (2004-08-26)
- MIPS:
- Motorola 6800:
- PA-RISC:
- Dodatek ELF pro PA-RISC Verze 1.43 (6. října 1997)
- PowerPC:
- Systém V ABI, doplněk PPC
- Integrované binární rozhraní aplikace PowerPC 32bitová implementace (1995-10-01)
- 64bitový doplněk binárního rozhraní aplikace PowerPC ELF Verze 1.9 (2004)
- SPARC:
- S / 390:
- zSeries:
- Symbian OS 9:
The Linux Standard Base (LSB) doplňuje některé z výše uvedených specifikací pro architektury, ve kterých je uvedena.[22] Například to je případ doplňku System V ABI, AMD64.[23][24]
86otevření
86otevření byl projekt k vytvoření konsensu o společném binární soubor formát pro Unix a Unixový operační systémy na společné Kompatibilní s PC x86 architektura, aby povzbudili vývojáře softwaru k přechodu na tuto architekturu.[25] Počáteční myšlenkou bylo standardizovat malou podmnožinu Spec 1170, předchůdce Single UNIX Specification a Knihovna GNU C (glibc) umožňující provoz nemodifikovaných binárních souborů v operačních systémech podobných systému x86 Unix. Projekt byl původně označen jako „Spec 150“.
Nakonec byl zvolen formát ELF, konkrétně Linuxová implementace ELF, poté, co se ukázalo, že je de facto Standard podporují všichni zúčastnění prodejci a operační systémy.
Skupina zahájila e-mailové diskuse v roce 1997 a poprvé se setkala společně na Provoz Santa Cruz kanceláře 22. srpna 1997.
Řídící výbor byl Marc Ewing Dion Johnson, Evan Leibovitch, Bruce Perens Andrew Roach, Bryan Wayne Sparks a Linus Torvalds. Ostatní lidé na projektu byli Keith Bostic Chuck Cranor, Michael Davidson, Chris G. Demetriou, Ulrich Drepper, Don Dugger, Steve Ginzburg, Jon „maddog“ Hall Ron Holt, Jordan Hubbard, Dave Jensen, Kean Johnston, Andrew Josey, Robert Lipe, Bela Lubkin, Tim Marsland, Greg Page, Ronald Joe Record, Tim Ruckle, Joel Silverstein, Chia-pi Tien a Erik Troan. Zastoupené operační systémy a společnosti byly BeOS, BSDI, FreeBSD, Intel, Linux, NetBSD, SCO a SunSoft.
Projekt postupoval a v polovině roku 1998 se SCO začalo vyvíjet lxrun, open-source vrstva kompatibility schopen spouštět binární soubory Linuxu OpenServer, UnixWare, a Solaris. SCO oznámila oficiální podporu lxrun na LinuxWorld v březnu 1999. Sun Microsystems začal oficiálně podporovat lxrun pro Solaris počátkem roku 1999,[26] a později přešel na integrovanou podporu binárního formátu Linuxu přes Kontejnery Solaris pro aplikace Linux.
Vzhledem k tomu, že BSD mají dlouho podporované binární soubory pro Linux (prostřednictvím a vrstva kompatibility ) a hlavní prodejci x86 Unixu, kteří přidali podporu pro tento formát, projekt rozhodl, že Linux ELF je formát zvolený průmyslovým odvětvím a „prohlásí [d] sám za rozpuštěný“ 25. července 1999.[27]
FatELF: univerzální binární soubory pro Linux
FatELF je rozšíření binárního formátu ELF, které přidává tlustá binárka schopnosti.[28] Je zaměřen na Linux a další Unixový operační systémy. Kromě abstrakce architektury CPU (pořadí bytů, velikost slova, procesor instrukční sada atd.), existuje potenciální výhoda abstrakce softwarové platformy, např. binární soubory, které podporují více jader ABI verze. Ke dni 25. dubna 2020[Aktualizace]„FatELF nebyl integrován do hlavního linuxového jádra.[29][30][31]
Viz také
- Binární rozhraní aplikace
- Porovnání formátů spustitelných souborů
- TRPASLÍK - formát pro ladění dat
- Standard Intel Binary Compatibility Standard
- Přenosný spustitelný soubor - formát používaný Windows
- vDSO - virtuální DSO
- Kód nezávislý na poloze
Reference
- ^ A b Standard rozhraní nástroje (TIS) Specifikace spustitelného a spojovacího formátu (ELF) Verze 1.2 (Květen 1995)
- ^ Binární rozhraní aplikace System V Vydání 4.1 (1997-03-18)
- ^ „Dostupné lexery - segmenty“. pygmenty.org.
- ^ „Záhlaví ELF“. Sco.com. Červenec 2000. Citováno 2014-02-07.
- ^ „LXR linux / include / linux / elf.h“. linux.no. Citováno 27. dubna 2015.
- ^ „oznámení glibc 2.12“.
- ^ "sourceware.org Git - glibc.git / blob - libc-abis".
- ^ "sourceware.org Git - glibc.git / blob - sysdeps / gnu / ldsodefs.h".
- ^ "Záhlaví programu". Sco.com. Červenec 2000. Citováno 2017-04-05.
- ^ „elfutils“. sourceware.org. Citováno 30. dubna 2017.
- ^ „Binární formáty“.
- ^ "MinixReleases - Minix Wiki". Wiki.minix3.org. Archivovány od originál dne 30. 3. 2013. Citováno 2014-01-19.
- ^ https://vmssoftware.com/pdfs/State_of_Port_20160906.pdf
- ^ „GCCSDK - RISC OS“. Riscos.info. 2012-04-22. Citováno 2014-01-19.
- ^ „Oznamování verze Windows 10 Insider Preview Build 14316“. Blog Windows Experience. 2016-04-06. Citováno 2016-04-10.
- ^ Foley, Mary Jo. „Pod kapotou subsystému Windows společnosti Microsoft pro Linux | ZDNet“. ZDNet. Citováno 2016-08-19.
- ^ „Průvodce programátora pro opatrovníky“ (PDF). Hewlett Packard Enterprise. Archivovány od originál (PDF) dne 2018-05-30. Citováno 2018-05-30. str. 44 archivováno z originál dne 2018-5-30
- ^ PlayStation Portable používá šifrované a přemístěné ELF: PSP
- ^ Formát spustitelného souboru OS Symbian
- ^ Rosen, Kenneth; Hostitel, Douglas; Klee, Rachel; Rosinski, Richard (2007). UNIX: Kompletní reference (2. vyd.). McGraw Hill Professional. str. 707. ISBN 9780071706988. Citováno 2017-06-08.
Dynamicky propojené knihovny se také nazývají sdílené objekty (.so).
- ^ „Kapitola 4: Soubory objektů“, Binární rozhraní aplikace System V, 2009-10-26, e_machine
- ^ "Specifikace odkazované na LSB". linuxfoundation.org. Citováno 27. dubna 2015.
- ^ „Spustitelný a spojovací formát (ELF)“. linuxfoundation.org. Citováno 27. dubna 2015.
- ^ "Úvod". linuxfoundation.org. Citováno 27. dubna 2015.
- ^ Leibovitch, Evan (1997-12-23). „86Otevřené často kladené otázky“. Archivovány od originál dne 11.03.2007. Citováno 2007-06-06.
- ^ Record, Ronald (1998-05-21). „Bulletin on status of 86open at SCO“. Archivovány od originál dne 2008-12-08. Citováno 2008-05-06.
- ^ Leibovitch, Evan (1999-07-25). „The86open Project - Final Update“. Archivovány od originál dne 2007-02-27. Citováno 2007-05-06.
- ^ Gordon, Ryan. "specifikace fatelf v1". icculus.org. Citováno 2010-07-25.
- ^ Gordon, Ryan. „FatELF: Ukázalo se, že se mi nejistota líbila lépe“. icculus.org. Citováno 2010-07-13.
- ^ Holwerda, Thom (03.11.2009). „Ryan Gordon zastavuje projekt FatELF“. osnews.com. Citováno 2010-07-05.
- ^ Brockmeier, Joe (23. června 2010). „JÁ: Anatomie (údajného) selhání“. Linux Weekly News. Citováno 2011-02-06.
Další čtení
- Levine, John R. (2000) [říjen 1999]. Linkery a nakladače. Řada Morgan Kaufmann v softwarovém inženýrství a programování (1. vyd.). San Francisco, USA: Morgan Kaufmann. ISBN 1-55860-496-0. OCLC 42413382. Archivováno z původního dne 2012-12-05. Citováno 2020-01-12. Kód: [1][2] Errata: [3]
- Drepper, Ulrichu (2006-08-20). „Jak psát sdílené knihovny“ (PDF). 4.0. Citováno 2007-06-20. Citovat deník vyžaduje
| deník =
(Pomoc) - Neopěvovaný hrdina: Pracovitý ELF Peter Seebach, 20. prosince 2005, archivovány od originálu 24. února 2007
- LibElf a GElf - knihovna pro manipulaci se soubory ELf na Wayback Machine (archivováno 25. února 2004)
- Formát souboru objektu ELF podle disekce autor: Eric Youngdale (01.05.1995)
- Výukový program Whirlwind o vytváření spustitelných souborů ELF pro Teensy pro Linux Brian Raiter
- Přemístění ELF do nepřemístitelných objektů autor: Julien Vanegue (2003-08-13)
- Integrované ladění ELF bez ptrace týmem ELFsh (01.08.2005)
- Studium nakládání a přemisťování ELF autor: Pat Beirne (03.08.1999)
externí odkazy
- Příručka FreeBSD: Binární formáty (archivovaná verze)
- FreeBSD elf (5) manuální stránka
- NetBSD ELF - časté dotazy
- Linux elf (5) manuální stránka
- Průvodce propojovačem a knihovnami Oracle Solaris
- Projekt ERESI: reverzní inženýrství na operačních systémech založených na ELF
- Článek Linux Today o 86openu 26. července 1999
- Oznámení 86otevření na Debianu Oznámit seznam adresátů 10. října 1997, Bruce Perens
- Prohlášení Ulricha Dreppera (PDF) v Skupina SCO vs. IBM, 19. září 2006
- Otevřená a ELF diskuse na Groklaw, 13. srpna 2006