== Linkbestand ==
Ons kernelbestand heeft drie secties ('.text', '.data' en '.bss'), en begint in het geheugen op de 1 MiB grens (<code>.text 0x00100000 :0</code>). Het bestand begint bij het label <ttcode>start</ttcode> (<code>ENTRY(start)</code>). De drie secties zijn uitgelijnd op een 4 KiB grens (<code>. = ALIGN(4096)</code>).
{{Code|Titel='''link.ld'''|Code=<pre>
== Assembleren en linken ==
Om <ttcode>start.asm</ttcode> te assembleren, moeten we <ttcode>nasm</ttcode> aanroepen. We willen dat het uitvoerformaat 'elf' wordt (<code>-f elf</code>), want GRUB, de bootloader die we gaan gebruiken, kan daar goed mee overweg. Het te maken objectbestand is <ttcode>start.o</ttcode> (<code>-o start.o</code>) en het enige te assembleren bestand is nu <ttcode>start.asm</ttcode>. Als je fouten tegenkomt, verhelp die dan voordat je verder gaat.
<pre>
nasm -f elf -o start.o start.asm
<!-- Mogelijke fout(en): Op een 64-bit computer proberen te compileren? -->
Als we dit gedaan hebben, hebben we een <ttcode>start.o</ttcode> bestand er bij. Dit moet nog gelinkt worden; dan worden alle onbekende symbolen opgelost en komt er een uitvoerbaar bestand uit. Het linkbestand is <ttcode>link.ld</ttcode> (<code>-T link.ld</code>) en de te maken binary is <ttcode>kernel.bin</ttcode> (<code>-o kernel.bin</code>). Het enige objectbestand is <ttcode>start.o</ttcode>. Ook hier kunnen fouten ontstaan. Verhelp die eerst voordat je verder gaat.
<pre>
ld -T link.ld -o kernel.bin start.o
{{Bericht
|titel=Foutmelding?
|bericht=Als je één van de volgende meldingen krijgt, kijk dan eens in het hoofdstuk [[../../Werkomgeving en hulpmiddelen/Toolchain|Toolchain]] voor informatie over hoe je een ''cross-platform toolchain'' maakt, en gebruik dan de <ttcode>ld</ttcode> uit de toolchain (bijv. <ttcode>i586-elf-ld</ttcode>).
<pre>
ld: i386 architecture of input file 'start.o' is incompatible with xxx output
|type=info}}
Nu hebben we een <ttcode>kernel.bin</ttcode> bestand, maar we kunnen het nog niet starten. In het volgende hoofdstuk staat hoe <ttcode>kernel.bin</ttcode> op een CD image kan worden gezet. Als het goed is verschijnt het menu van GRUB dan op je scherm. Als het besturingssysteem dan start, verschijnt er eventueel nog wat GRUB uitvoer, en daarna een knipperende cursor.
{{sub}}
|