Ontwerp en bouw een besturingssysteem/Werkomgeving en hulpmiddelen/Toolchain/Cygwin: verschil tussen versies

Uit Wikibooks
Verwijderde inhoud Toegevoegde inhoud
{{sub}}
Lintfouten: Verouderde HTML-elementen
 
Regel 8: Regel 8:
== Cygwin installeren ==
== Cygwin installeren ==
# Ga naar [http://www.cygwin.com/ cygwin.com] en download de laatste versie van Cygwin<!-- 1.7.7 -->.
# Ga naar [http://www.cygwin.com/ cygwin.com] en download de laatste versie van Cygwin<!-- 1.7.7 -->.
# Voer de setup uit en volg de stappen. Kies als 'download site' <tt><nowiki>http://cygwin.xl-mirror.nl/</nowiki></tt> of een andere site in Nederland.
# Voer de setup uit en volg de stappen. Kies als 'download site' <code><nowiki>http://cygwin.xl-mirror.nl/</nowiki></code> of een andere site in Nederland.
# Selecteer behalve de reeds geselecteerde packages ook nog de laatste versies van de volgende packages:
# Selecteer behalve de reeds geselecteerde packages ook nog de laatste versies van de volgende packages:
## <tt>gcc-core</tt> (in All > Devel)<!-- 3.4.4-999 -->
## <code>gcc-core</code> (in All > Devel)<!-- 3.4.4-999 -->
## <tt>gcc-g++</tt> (in All > Devel)<!-- 3.4.4-999 -->
## <code>gcc-g++</code> (in All > Devel)<!-- 3.4.4-999 -->
## <tt>make</tt> (in All > Devel)<!-- 3.81-2 -->
## <code>make</code> (in All > Devel)<!-- 3.81-2 -->
## <tt>flex</tt> (in All > Devel)<!-- 2.5.35-1 -->
## <code>flex</code> (in All > Devel)<!-- 2.5.35-1 -->
## <tt>bison</tt> (in All > Devel)<!-- 2.4.2-1 -->
## <code>bison</code> (in All > Devel)<!-- 2.4.2-1 -->
## <tt>libgmp-devel</tt> (in All > Libs)<!-- 4.3.1-3 -->
## <code>libgmp-devel</code> (in All > Libs)<!-- 4.3.1-3 -->
## <tt>libmpfr-devel</tt> (in All > Libs)<!-- 2.4.1-4 -->
## <code>libmpfr-devel</code> (in All > Libs)<!-- 2.4.1-4 -->
## <tt>libmpc-devel</tt> (in All > Libs)<!-- 0.8-1 -->
## <code>libmpc-devel</code> (in All > Libs)<!-- 0.8-1 -->
# De volgende package is niet nodig voor het cross-compilen, maar wel voor deze tutorial:
# De volgende package is niet nodig voor het cross-compilen, maar wel voor deze tutorial:
## <tt>genisoimage</tt> (in All > Utils)<!-- 1.1.7.1-1 -->
## <code>genisoimage</code> (in All > Utils)<!-- 1.1.7.1-1 -->
# Voer de laatste stappen van de setup uit.
# Voer de laatste stappen van de setup uit.
# Kopieer het setupbestand zelf (<tt>setup.exe</tt>) naar de hoofdmap van Cygwin (bijv. <tt>C:\cygwin</tt>)
# Kopieer het setupbestand zelf (<code>setup.exe</code>) naar de hoofdmap van Cygwin (bijv. <code>C:\cygwin</code>)


== Bronbestanden downloaden ==
== Bronbestanden downloaden ==
Om een cross-platform toolchain te maken moeten de oorspronkelijke programma's opnieuw gecompileerd worden. Hiervoor is de oorspronkelijke broncode nodig. Bestanden met een <tt>.tar.gz</tt> en <tt>.tar.bz2</tt> extensie zijn gecomprimeerde archieven zoals <tt>.zip</tt>, en worden veel gebruikt op Linux en Unix systemen.
Om een cross-platform toolchain te maken moeten de oorspronkelijke programma's opnieuw gecompileerd worden. Hiervoor is de oorspronkelijke broncode nodig. Bestanden met een <code>.tar.gz</code> en <code>.tar.bz2</code> extensie zijn gecomprimeerde archieven zoals <code>.zip</code>, en worden veel gebruikt op Linux en Unix systemen.
# Download het <tt>gcc-core-x.x.x</tt> archief met de laatste versie van GCC van [http://ftp.gnu.org/gnu/gcc/ ftp.gnu.org]
# Download het <code>gcc-core-x.x.x</code> archief met de laatste versie van GCC van [http://ftp.gnu.org/gnu/gcc/ ftp.gnu.org]
# Download het <tt>binutils-x.xx</tt> archief met de laatste versie van Binutils van [http://ftp.gnu.org/gnu/binutils/ ftp.gnu.org]<br />
# Download het <code>binutils-x.xx</code> archief met de laatste versie van Binutils van [http://ftp.gnu.org/gnu/binutils/ ftp.gnu.org]<br>
# Pak beide archieven uit in de <tt>/usr/src</tt> map van de Cygwin installatie (bijvoorbeeld in <tt>C:\cygwin\usr\src</tt>).
# Pak beide archieven uit in de <code>/usr/src</code> map van de Cygwin installatie (bijvoorbeeld in <code>C:\cygwin\usr\src</code>).
{{Bericht
{{Bericht
|titel=Let op!
|titel=Let op!
|bericht=De versienummering die GNU aanhoudt is als volgt: elke punt in een versienummer scheidt een heel getal. Dus <tt>binutils-2.20</tt> is nieuwer dan <tt>binutils-2.9</tt>. De bestanden op de websites staan dus ''niet'' van oud naar nieuw gesorteerd; de onderste is ''niet'' persé de nieuwste.
|bericht=De versienummering die GNU aanhoudt is als volgt: elke punt in een versienummer scheidt een heel getal. Dus <code>binutils-2.20</code> is nieuwer dan <code>binutils-2.9</code>. De bestanden op de websites staan dus ''niet'' van oud naar nieuw gesorteerd; de onderste is ''niet'' persé de nieuwste.
|type=waarschuwing}}
|type=waarschuwing}}


== Voorbereiding ==
== Voorbereiding ==
Er moeten nog wat voorbereiding gedaan worden, zoals het aanmaken van de mappen <tt>build-binutils</tt> en <tt>build-gcc</tt> in de <tt>/usr/src</tt> 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.
Er moeten nog wat voorbereiding gedaan worden, zoals het aanmaken van de mappen <code>build-binutils</code> en <code>build-gcc</code> in de <code>/usr/src</code> 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.
<pre>
<pre>
cd /usr/src
cd /usr/src
Regel 42: Regel 42:


== Binutils compileren ==
== Binutils compileren ==
Nu moet eerst binutils worden gecompileerd. Voer de volgende commando's uit. Het <tt>make all</tt> commando kan meer dan een half uur duren. Merk op dat voor <tt>x.xx</tt> het juiste versienummer moet worden ingevuld.
Nu moet eerst binutils worden gecompileerd. Voer de volgende commando's uit. Het <code>make all</code> commando kan meer dan een half uur duren. Merk op dat voor <code>x.xx</code> het juiste versienummer moet worden ingevuld.
<pre>
<pre>
cd /usr/src/build-binutils
cd /usr/src/build-binutils
Regel 63: Regel 63:
{{Bericht
{{Bericht
|titel=Tip!
|titel=Tip!
|bericht=Als je <tt>../binutils-</tt> hebt getypt, druk dan op Tab. De shell vult het automatisch aan tot <tt>../binutils-x.xx/</tt> waarbij <tt>x.xx</tt> het juiste versienummer is.
|bericht=Als je <code>../binutils-</code> hebt getypt, druk dan op Tab. De shell vult het automatisch aan tot <code>../binutils-x.xx/</code> waarbij <code>x.xx</code> het juiste versienummer is.
|type=tip}}
|type=tip}}


== GCC compileren ==
== GCC compileren ==
Nu kan gcc worden gecompileerd. Voer de volgende commando's uit. Het <tt>make all-gcc</tt> commando kan meer dan een uur duren.
Nu kan gcc worden gecompileerd. Voer de volgende commando's uit. Het <code>make all-gcc</code> commando kan meer dan een uur duren.
<pre>
<pre>
cd /usr/src/build-gcc
cd /usr/src/build-gcc
Regel 85: Regel 85:


== Cygwin configureren ==
== Cygwin configureren ==
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 begin van het <tt>.bashrc</tt> bestand in je Cygwin home directory (<tt>/home/''Gebruikersnaam''/.bashrc</tt>):
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 begin van het <code>.bashrc</code> bestand in je Cygwin home directory (<code>/home/''Gebruikersnaam''/.bashrc</code>):
{{Code|Titel='''.bashrc'''|Code=<pre>
{{Code|Titel='''.bashrc'''|Code=<pre>
export PATH=/usr/local/cross/bin:`printenv PATH`
export PATH=/usr/local/cross/bin:`printenv PATH`
Regel 91: Regel 91:
...
...
</pre>}}
</pre>}}
Nu is alles klaar. Om een programma uit de cross-platform toolchain te gebruiken in plaats van de oorspronkelijke versie, zet je er <tt>i586-elf-</tt> voor, bijvoorbeeld <tt>i586-elf-ld</tt> in plaats van <tt>ld</tt>.
Nu is alles klaar. Om een programma uit de cross-platform toolchain te gebruiken in plaats van de oorspronkelijke versie, zet je er <code>i586-elf-</code> voor, bijvoorbeeld <code>i586-elf-ld</code> in plaats van <code>ld</code>.


{{sub}}
{{Sub}}

Huidige versie van 13 dec 2021 om 18:01

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.

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

  1. Ga naar cygwin.com en download de laatste versie van Cygwin.
  2. Voer de setup uit en volg de stappen. Kies als 'download site' http://cygwin.xl-mirror.nl/ of een andere site in Nederland.
  3. Selecteer behalve de reeds geselecteerde packages ook nog de laatste versies van de volgende packages:
    1. gcc-core (in All > Devel)
    2. gcc-g++ (in All > Devel)
    3. make (in All > Devel)
    4. flex (in All > Devel)
    5. bison (in All > Devel)
    6. libgmp-devel (in All > Libs)
    7. libmpfr-devel (in All > Libs)
    8. libmpc-devel (in All > Libs)
  4. De volgende package is niet nodig voor het cross-compilen, maar wel voor deze tutorial:
    1. genisoimage (in All > Utils)
  5. Voer de laatste stappen van de setup uit.
  6. Kopieer het setupbestand zelf (setup.exe) naar de hoofdmap van Cygwin (bijv. C:\cygwin)

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-core-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 Cygwin installatie (bijvoorbeeld in C:\cygwin\usr\src).
WaarschuwingLet 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.


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

Nu 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
WaarschuwingLet op!
Controleer elk commando nog even op typfouten voordat je op Enter drukt.


TipTip!
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 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[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 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.

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