Linker — Änderungen 5089 → 5090

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]]