| Zeile 35: | Zeile 35: | ||
Erst durch das Zusammenlinken mit anderen Objektdateien (hier: die der libc) wird der nötige Code in die Datei | Erst durch das Zusammenlinken mit anderen Objektdateien (hier: die der libc) wird der nötige Code in die Datei | ||
eingelinkt und die Datei ausführbar gemacht: | eingelinkt und die Datei ausführbar gemacht: | ||
| + | |||
| + | |||
| + | == Linkerdatei == | ||
| + | Eine Linkerdatei definiert, wo welche Sektionen des Codes liegen. | ||
| + | |||
| + | Hier ein Beispiel aus dem Betriebssystem [[Qultics]]: | ||
| + | |||
| + | <code> | ||
| + | OUTPUT_FORMAT(elf32-i386) | ||
| + | OUTPUT_ARCH(i386:i386) | ||
| + | ENTRY(start) | ||
| + | phys = 0x00100000; | ||
| + | SECTIONS | ||
| + | { | ||
| + | kernel_start = phys; | ||
| + | |||
| + | .text phys : AT(phys) { | ||
| + | code = .; | ||
| + | *(.text) | ||
| + | *(.rodata) | ||
| + | . = ALIGN(4096); | ||
| + | } | ||
| + | .data : AT(phys + (data - code)) | ||
| + | { | ||
| + | data = .; | ||
| + | *(.data) | ||
| + | . = ALIGN(4096); | ||
| + | } | ||
| + | .bss : AT(phys + (bss - code)) | ||
| + | { | ||
| + | bss = .; | ||
| + | *(.bss) | ||
| + | . = ALIGN(4096); | ||
| + | } | ||
| + | end = .; | ||
| + | |||
| + | kernel_end = end; | ||
| + | kernel_size = kernel_end - kernel_start; | ||
| + | } | ||
| + | </code> | ||
[[Kategorie:Werkzeuge]] | [[Kategorie:Werkzeuge]] | ||