Ontwerp en bouw een besturingssysteem/Werkomgeving en hulpmiddelen/Toolchain/Cygwin: verschil tussen versies
{{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' < |
# 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: |
||
## < |
## <code>gcc-core</code> (in All > Devel)<!-- 3.4.4-999 --> |
||
## < |
## <code>gcc-g++</code> (in All > Devel)<!-- 3.4.4-999 --> |
||
## < |
## <code>make</code> (in All > Devel)<!-- 3.81-2 --> |
||
## < |
## <code>flex</code> (in All > Devel)<!-- 2.5.35-1 --> |
||
## < |
## <code>bison</code> (in All > Devel)<!-- 2.4.2-1 --> |
||
## < |
## <code>libgmp-devel</code> (in All > Libs)<!-- 4.3.1-3 --> |
||
## < |
## <code>libmpfr-devel</code> (in All > Libs)<!-- 2.4.1-4 --> |
||
## < |
## <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: |
||
## < |
## <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 (< |
# 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 < |
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 < |
# 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 < |
# 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 < |
# 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 < |
|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 < |
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 < |
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 < |
|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 < |
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 < |
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 < |
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}} |
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.
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[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.
- 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[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
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 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
.