Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Foaly am 26. October 2010, 09:27
-
Hallo erstmal,
wie man sieht bin ich neu hier. Ich hab dieses Forum/die Wiki erst vor ein paar Tagen entdeckt und war sofort begeistert von diesem Projekt. Ich mich auch schon immer gefragt hab wie Betriebssysteme funktionieren und wollte auch schon immer mal ein kleines OS schreiben.
Ich hab erstmal angefangen die Tutorials aus der Wiki durch zuarbeiten, weil ich mir erstmal alles anschauen wollte, so vonwegen ob das überhaupt funktioniert und wie das alles aussieht, Buildchain etc.
Bis zum Teil 4 hat auch alles wunderbar funktioniert. Aber an dem Punkt wo man das ganze Linken soll gibt der Linker Fehler aus.
Ich bin wie folgt vorgegangen: Ich habe das init.c, das start.S und das Makefile aus der Wiki übernommen und es versucht zu kompilieren. Als Compiler hab ich MinGW in der Version 4.5.0 von der offiziellen Website. Der Link auf der Wiki zu dem empfohlenen Paket funktioniert nicht mehr. Aber im Prinzip sollte das ja egal sein, weil ich den gcc in version 4.5.0 und die buildutils habe. Und mehr wir ja nicht gebraucht oder?
Beim Ausführen des Makefiles kommen folgende Error:
mingw32-make
gcc -m32 -Wall -g -fno-stack-protector -nostdinc -c -o init.o init.c
gcc -m32 -c -o start.o start.S
ld -melf_i386 -Ttext=0x100000 -0 kernel init.o start.o
ld: unrecognized emulation mode: elf_i386
Supported emulations: i386pe
mingw32-make: *** [kernel] Error 1
Es hängt halt damit zusammen das mein linker scheinbar kein ELF ausgeben kann. Kann mir einer sagen wie ich ihm das beibringe? Oder ist etwas anderes falsch?
ich hab schon Suchfunktion und Google benutzt, aber nichts gefunden.
Bitte helft mir.
Danke schonmal im vorraus!!
Foaly
-
Hi,
der Link zum Cross-Compiler (http://www.lowlevel.eu/wiki/Crosscompiler_f%C3%BCr_Windows#Download) sollte wieder funktionieren. Der normale MinGW ist für das OS-Dev eher nicht geeignet, weil der wie du festgestellt hast kein ELF beherrscht.
Entweder lädst du dir doch noch den Cross-Compiler runter, oder du erstellst dir selbst einen. Anleitungen gibts dafür z.B. bei uns im Wiki (http://www.lowlevel.eu/wiki/Cross-Compiler) oder im osdev.org-Wiki (http://wiki.osdev.org/GCC_Cross-Compiler).
-
Vielen Dank für deine schnelle Antwort.
So was in die Richtung, wie das MinGW kein ELF beherrscht oder so hab ich mir schon gedacht.
Ich meinte allerdings nicht den link zum Cross-Compiler Wikieintrag, sondern den Link zu der Stelle, wo man den Compiler und die binutils runterlädt. Also diesen hier: http://jidder.de/lost/files/crosstools-complete.rar Da kriegt man den netten 404.
Gibt es noch eine andere Stelle, wo man das herunterladen kann? (vielleicht auch in version 4.5.0 ?!) Oder bleibt einem nichts anders als das ganze selbst zu machen?
-
Wir meinen den selben link. Heute morgen habe ich den repariert, nachdem ich deinen Post gesehen habe und dann spiele ich ihn heute Nachmittag wieder kaputt ... :roll: jetzt sollte er wieder gehen.
Den Compiler hab ich vor Ewigkeiten mal erstellt, als das noch halbwegs herausfordernd war. Von mir gibt es dafür aber keine Updates mehr, weil ich dazu keine Lust mehr habe.
-
Hahaha achso. Coole Sache. Vielen Dank.
Ich habs gerade heruntergeladen und werds gleich mal ausprobieren.
-
Ich baue momentan einen für Windows, kann aber noch ein wenig dauern. Ich werde ihn dann wenn er fertig ist auf meinem Webspace zu verfügung stellen.
@Pork Chiken: wäre es erlaubt, deinen Link dann gegen den meinigen auszutauschen?
PNoob
-
PNoob: Macht doch beide Links untereinander? Wenn, wie hier als Beispiel, einer nicht geht, geht ja immernoch der andere...
-
gute Idee
werd ich machen
-
Vielen Dank! Hat alles super funktioniert! Auch mit GRUB und Bocks hat alles direkt reibungslos geklappt :D
Das mit der neuen Version klingt ja auch gut!
Danke nochmal. mal sehen wo mich das ganze hinführt hahaha :D
-
neu version baut noch, die lade ich morgen mittag wwnn alles läuft hoch. Ist gcc version 4.5.1 und Binutils 2.20. C und C++ Compiler sind gebaut. Also das gleiche paket wie in Wiki nur neuer uns dadurch besser.
PNoob