Objektový kód, objektový soubor () je v informatice označení pro soubory, které obsahují strojový kód spolu s dalšími informacemi (tzv. metadata). Objektový soubor je rozdělen do několika sekcí. Každá sekce obsahuje data použitá v kódu a metadata, která přidávají informace o datech. Konkrétně to jsou relokační tabulky, velikost jednotlivých sekcí, jejich pozice v objektovém souboru, umístění sekce v paměti. Obsahem dat pak může být samotný kód programu, komentáře, ladící a profilovací informace, konstanty, pozice zásobníku, halda a další.
Objektový soubor může být vytvořen pomocí překladače (nebo linkerem z jiných objektových souborů). Může z něho být vytvořena výsledný spustitelný soubor, knihovna nebo jiná forma spustitelného souboru.
Formáty objektového souboru Existuje mnoho formátů objektových souborů. Zprvu byl pro každou architekturu jiný typ. v unixových systémech v současné době existují formáty COFF a ELF. Za primitivní objektový kód lze považovat i soubor s příponou .COM, který je jen pouhou posloupností bajtů strojového kódu, která je načtena na pevnou adresu v operační paměti (do jednoho segmentu). Další formáty objektového kódu jsou EXE soubory.
Pro prostředí GNU existuje skupina programů GNU binutils, které s objektovými soubory pracují.
Ukázka výpisu sekcí objektového souboru Zdrojový soubor:
int main(void) { int j=0xdeadbeef; return j;
Zkompilován pomocí:
gcc -ffreestanding -nostdlib -Wall -c test.c -o test.o
Má následující sekce:
objdump test.o -h
a.out: file format elf32-i386
Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000024 00000000 00000000 00000034 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .data 00000000 00000000 00000000 00000058 2**2 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000000 00000000 00000000 00000058 2**2 ALLOC 3 .comment 00000012 00000000 00000000 00000058 2**0 CONTENTS, READONLY 4 .note.GNU-stack 00000000 00000000 00000000 0000006a 2**0 CONTENTS, READONLY
Je zde sekce .text, tedy kód. Sekce .data, kde jsou globální proměnné a pole (zde žádné není). V sekci .bss jsou neinicializovaná data. Ostatní sekce jsou pak pomocné informace dodány kompilátorem.
Souhrn některých formátů objektového kódu DOS .COM .EXE Relocatable Object Module Format (dříve známý jako "OBJ file" nebo "OMF", také používaný některými nástroji pro Microsoft Windows)
Embedded IEEE-695 S-records
Macintosh PEF/CFM Mach-O (NEXTSTEP, Mac OS X)
OpenVMS ELF DWARF – Formát pro debugger a trasování programu
unixové systémy a.out COFF (System V) ECOFF (Mips) XCOFF (AIX) ELF (SVR4, používaný v moderních systémech) Mach-O (NeXT, Mac OS X)
Microsoft Windows 16bitový New Executable (NE) Portable Executable (PE)
ostatní Class (file format) IBM 360 object format NLM OMF (VME) SOM (HP) XBE – Xbox executable APP – Symbian OS executable file format RDOFF Hunk – AmigaOS Intel HEX
Reference The ELF Object File Format: Introduction – Popis jednotlivých sekcíve formátu ELF (stránka v angličtině)
Související články Překladač Linker
Kategorie:Souborové formáty Kategorie:Programové knihovny