Autor Thema: Probleme Beim Linken  (Gelesen 5487 mal)

Foaly

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
« 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

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 26. October 2010, 10:47 »
Hi,

der Link zum Cross-Compiler 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 oder im osdev.org-Wiki.
Dieser Text wird unter jedem Beitrag angezeigt.

Foaly

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 26. October 2010, 17:39 »
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?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 26. October 2010, 18:07 »
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.
Dieser Text wird unter jedem Beitrag angezeigt.

Foaly

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 26. October 2010, 18:16 »
Hahaha achso. Coole Sache. Vielen Dank.
Ich habs gerade heruntergeladen und werds gleich mal ausprobieren.

Programm Noob

  • Gast
Gespeichert
« Antwort #5 am: 26. October 2010, 19:02 »
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

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 26. October 2010, 19:23 »
PNoob: Macht doch beide Links untereinander? Wenn, wie hier als Beispiel, einer nicht geht, geht ja immernoch der andere...

Programm Noob

  • Gast
Gespeichert
« Antwort #7 am: 26. October 2010, 19:59 »
gute Idee
werd ich machen

Foaly

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 26. October 2010, 22:14 »
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

Programm Noob

  • Gast
Gespeichert
« Antwort #9 am: 26. October 2010, 23:07 »
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

 

Einloggen