Ontwerp en bouw een besturingssysteem/Werkomgeving en hulpmiddelen/Toolchain/Cygwin
Om onder Windows de juiste programma's en hulpmiddelen voor het maken van een besturingssysteem werkend te krijgen, wordt Cygwin het meest aangeraden. Cygwin is een bibliotheek van kleine Linux programma's, speciaal klaargemaakt voor gebruik onder Windows. Maar bepaalde programma's, zoals de gcc compiler, maken Windows-compatibele uitvoerbare bestanden (PE-bestanden) en voor ons besturingssysteem zijn die nou net niet zo handig. Dus op deze pagina nemen we de stappen die nodig zijn om Cygwin te installeren en een werkende cross-platform toolchain te krijgen.
Let op! Het maken van een cross-platform toolchain neemt, als alles goed gaat, een aantal uren in beslag. Gelukkig hoeft het maar één keer. |
Cygwin installeren
bewerken- Ga naar cygwin.com en download de laatste versie van Cygwin.
- Voer de setup uit en volg de stappen. Kies als 'download site'
http://cygwin.xl-mirror.nl/
of een andere site in Nederland. - Selecteer behalve de reeds geselecteerde packages ook nog de laatste versies van de volgende packages:
gcc-core
(in All > Devel)gcc-g++
(in All > Devel)make
(in All > Devel)flex
(in All > Devel)bison
(in All > Devel)libgmp-devel
(in All > Libs)libmpfr-devel
(in All > Libs)libmpc-devel
(in All > Libs)
- De volgende package is niet nodig voor het cross-compilen, maar wel voor deze tutorial:
genisoimage
(in All > Utils)
- Voer de laatste stappen van de setup uit.
- Kopieer het setupbestand zelf (
setup.exe
) naar de hoofdmap van Cygwin (bijv.C:\cygwin
)
Bronbestanden downloaden
bewerkenOm 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.
- Download het
gcc-core-x.x.x
archief met de laatste versie van GCC van ftp.gnu.org - Download het
binutils-x.xx
archief met de laatste versie van Binutils van ftp.gnu.org - Pak beide archieven uit in de
/usr/src
map van de Cygwin installatie (bijvoorbeeld inC:\cygwin\usr\src
).
Voorbereiding
bewerkenEr 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 commando's 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
bewerkenNu moet eerst binutils worden gecompileerd. Voer de volgende commando's uit. Het make all
commando 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
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
bewerkenNu kan gcc worden gecompileerd. Voer de volgende commando's uit. Het make all-gcc
commando 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 --without-headers make all-gcc make install-gcc
Cygwin configureren
bewerkenOm 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 begin van het .bashrc
bestand in je Cygwin home directory (/home/Gebruikersnaam/.bashrc
):
.bashrc
export PATH=/usr/local/cross/bin:`printenv PATH` ...
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
.