Ontwerp en bouw een besturingssysteem/Werkomgeving en hulpmiddelen/Toolchain/Linux

Onder Linux is het gemakkelijk om een cross-platform toolchain aan te leggen.

Bronbestanden downloaden bewerken

Om een cross-platform toolchain te maken moeten de oorspronkelijke programma's opnieuw gecompileerd worden. Hiervoor is de oorspronkelijke broncode nodig. Bestanden met een .tar.gz en .tar.bz2 extensie zijn gecomprimeerde archieven zoals .zip, en worden veel gebruikt op Linux en Unix systemen.

  1. Download het gcc-x.x.x archief met de laatste versie van GCC van ftp.gnu.org
  2. Download het binutils-x.xx archief met de laatste versie van Binutils van ftp.gnu.org
  3. Pak beide archieven uit in de /usr/src map van de installatie.
 Let op!
De versienummering die GNU aanhoudt is als volgt: elke punt in een versienummer scheidt een heel getal. Dus binutils-2.20 is nieuwer dan binutils-2.9. De bestanden op de websites staan dus niet van oud naar nieuw gesorteerd; de onderste is niet persé de nieuwste.


 Tip!
Om een .tar.bz2 bestand in de huidige map uit te pakken, gebruik de volgende opdracht: tar -jxvf bestandnaam.tar.bz2

Om een .tar.gz bestand in de huidige map uit te pakken, gebruik de volgende opdracht: tar -zxvf bestandnaam.tar.gz


Voorbereiding bewerken

Er moeten nog wat voorbereiding gedaan worden, zoals het aanmaken van de mappen build-binutils en build-gcc in de /usr/src map. Voer de volgende opdrachten uit, elke regel gevolgd door een Enter waarna de computer even bezig gaat. Er verschijnt niet altijd een bevestiging.

cd /usr/src

mkdir build-binutils build-gcc

Binutils compileren bewerken

Nu moet eerst binutils worden gecompileerd. Voer de volgende opdrachten uit. De make all opdracht kan meer dan een half uur duren. Merk op dat voor x.xx het juiste versienummer moet worden ingevuld.

cd /usr/src/build-binutils

export PREFIX=/usr/local/cross

export TARGET=i586-elf

../binutils-x.xx/configure --target=$TARGET --prefix=$PREFIX --disable-nls

make all

make install
 Let op!
Controleer elk commando nog even op typfouten voordat je op Enter drukt.


 Tip!
Als je ../binutils- hebt getypt, druk dan op Tab. De shell vult het automatisch aan tot ../binutils-x.xx/ waarbij x.xx het juiste versienummer is.


GCC compileren bewerken

Nu kan gcc worden gecompileerd. Voer de volgende opdrachten uit. De make all-gcc opdracht kan meer dan een uur duren.

cd /usr/src/build-gcc

export PREFIX=/usr/local/cross

export TARGET=i586-elf

export PATH=$PATH:$PREFIX/bin

../gcc-x.x.x/configure --target=$TARGET --prefix=$PREFIX --disable-nls --enable-languages=c,c++ --without-headers

make all-gcc

make install-gcc

LibGCC compileren bewerken

Het is ook handig om libgcc te compileren. LibGCC is de GCC low-level runtime-bibliotheek en bevat onder andere integer, floating-point en stack unwinding functionaliteit.

cd /usr/src/build-gcc

export PREFIX=/usr/local/cross

export TARGET=i586-elf

export PATH=$PATH:$PREFIX/bin

make all-target-libgcc

make install-target-libgcc

PATH configureren bewerken

Om ervoor te zorgen dat de nieuwe gecompileerde programma's uit de cross-platform toolchain direct kunnen worden aangeroepen, moet je de volgende regel toevoegen aan het eind van het .profile bestand in je home directory (~/.profile):

.profile

...

PATH="/usr/local/cross/bin:$PATH"

Mogelijk moet je even uitloggen en opnieuw inloggen om de verandering aan het PATH toe te passen. Nu is alles klaar. Om een programma uit de cross-platform toolchain te gebruiken in plaats van de oorspronkelijke versie, zet je er i586-elf- voor, bijvoorbeeld i586-elf-ld in plaats van ld.

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.