Wat is ELF?
Afkorting van Executable and Linkable Format. Bestandsformaat voor objectbestanden, uitvoerbare bestanden en gedeelde bibliotheken op UNIX-achtige besturingssystemen zoals Linux en op embedded apparaten.
Japanse benaming: ELF
“ELF” komt voor in 4 oefenvragen uit 2 onderwerpen, bijv. Linker, loader en uitvoerbare formaten, Procesmaterialen (gassen, chemicaliën).
Vakgebied: Linker, loader en uitvoerbare formaten
Wat er in een ELF-bestand zit
Een bestand in Executable and Linkable Format (ELF) begint met een ELF-header die start met de magic bytes 0x7F, gevolgd door de letters E, L en F. De header legt vast of het bestand 32- of 64-bit is, de bytevolgorde, de doel-CPU, het bestandstype en het entry-pointadres waar de uitvoering begint. Hetzelfde formaat dekt relocatable objectbestanden die de compiler produceert, uitvoerbare bestanden, gedeelde bibliotheken en core dumps. Na de header volgen een program header table, de inhoud zelf en een section header table die elke sectie beschrijft.
ELF vs. PE en Mach-O
Linux, de BSD's en veel embedded systemen gebruiken ELF, Windows gebruikt het Portable Executable-formaat (PE) voor .exe- en .dll-bestanden, en macOS en iOS gebruiken Mach-O. De onderliggende ideeën van code- en datagebieden, symbolen, relocaties en informatie voor dynamisch linken zijn vergelijkbaar, maar de formaten verschillen, net als de systeemaanroepinterfaces en bibliotheken die de programma's verwachten. Daarom draait een gecompileerd programma niet ongewijzigd op een ander besturingssysteem, zelfs niet op dezelfde CPU.
Veelgestelde vragen
Waar staat ELF voor?
ELF staat voor Executable and Linkable Format, het standaard bestandsformaat voor objectbestanden, uitvoerbare bestanden en gedeelde bibliotheken op Linux en veel andere UNIX-achtige en embedded systemen.
Wat is het verschil tussen secties en segmenten in ELF?
Secties zijn fijnmazige eenheden zoals .text en .data die de linker samenvoegt en reloceert. Segmenten, beschreven door program headers, groeperen secties met dezelfde rechten tot de eenheden die de loader in het geheugen mapt.
Kan een ELF-programma op Windows draaien?
Niet native. Windows verwacht het PE-formaat en zijn eigen systeeminterfaces, dus een ELF-programma heeft een compatibiliteitslaag nodig, een virtuele machine met Linux, of hercompilatie voor Windows.