Autor Thema: Link probleme  (Gelesen 9196 mal)

BigBoesche

  • Beiträge: 15
    • Profil anzeigen
Gespeichert
« am: 18. March 2011, 20:20 »
Hallo ich habe folgenes Problem. Vorhab ich habe einen Mac mit Intel Prosessor. Ich wollt gerne nachdem ich lange mit Assembler OSDev betrieben habe mit C ein Kernel mache. Alles funktionier nur das linken nicht. Muss ich -t oder -T weil wenn ich -T wie es immer steht benutze steht da unknow Option -T, aber wenn ich da -t hinschreibe steht da ne fehler meldung
hier mal was ich eingebe
ld  link.ld -o kernel.bin
ld: warning: -arch not specified
ld: warning: in link.ld, file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: could not find entry point "start" (perhaps missing crt1.o) for inferred architecture x86_64

Danke fürs durchlesen  :mrgreen:
« Letzte Änderung: 18. March 2011, 20:32 von BigBoesche »

LittleFox

  • Beiträge: 306
    • Profil anzeigen
    • LF-Net.org
Gespeichert
« Antwort #1 am: 18. March 2011, 20:26 »
Moin,

ld -Tlink.ld -o kernel.bin
müsste es glaube heißen, hab meinen Kernel gerade nicht da.

Edit: und natürlich die Objektdateien dran.

Grüße,
LittleFox

BigBoesche

  • Beiträge: 15
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 18. March 2011, 20:30 »
ld -link.ld -o kernel.bin kernel.o
ld: library not found for -link.ld

ne geht auch nicht :(

LittleFox

  • Beiträge: 306
    • Profil anzeigen
    • LF-Net.org
Gespeichert
« Antwort #3 am: 18. March 2011, 20:40 »
-Tlink.ld das T ist wichtig

BigBoesche

  • Beiträge: 15
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 18. March 2011, 20:48 »
ld -Tlink.ld -o kernel.bin
ld: unknown option: -Tlink.ld

Ich raff es nicht aber bei Xcode link auch mit ld mit mit einer link.ld

LittleFox

  • Beiträge: 306
    • Profil anzeigen
    • LF-Net.org
Gespeichert
« Antwort #5 am: 18. March 2011, 21:04 »
seltsam ...
ld ist aber das vom gcc, oder?

BigBoesche

  • Beiträge: 15
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 18. March 2011, 21:16 »
ja :( danke trotzdem für die Antworten ;)

LittleFox

  • Beiträge: 306
    • Profil anzeigen
    • LF-Net.org
Gespeichert
« Antwort #7 am: 18. March 2011, 22:32 »
ruf mal ld --version auf
Irgendwie ist das alles sehr komisch, hab gerade meinen Kernel rausgesucht - genau so ruf ich ld auf
Vielleicht ist das nur in der Mac Version anders?

Edit: kann man mit dem XCODE ld eigentlich einen Kernel entwickeln? Das ist auf jeden Fall eine ganz andere Version: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/ld.1.html
Komplett andere Argumente
« Letzte Änderung: 18. March 2011, 22:37 von littlefox »

PNoob

  • Beiträge: 106
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #8 am: 19. March 2011, 00:38 »
Bentweder du baust dir gcc und binutils selber, oder du benutzt ne virtuelle maschine. ich glaube andere möglichkeiten wirst du nicht haben

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 19. March 2011, 02:09 »
Andere Argumente heißt nicht, dass das Ding untauglich ist.
Aber ich weiß nicht, ob hier jemand auf einem Mac entwickelt und dir da helfen könnte, deswegen ist eine virtuelle Maschine (oder eine native Linux-Installation auf dem Mac :-P) wahrscheinlich die sinnvollere Alternative.

Du kannst aber auch schauen, ob du einen anderen Compiler/Linker in deinem System findest oder nachinstallieren kannst, den du dann benutzen kannst. Sonst hilft nur selberbauen.

Gruß,
Svenska

BigBoesche

  • Beiträge: 15
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 19. March 2011, 18:13 »
Also ich hab mich gestern auch noch schlau gemacht. Also ein Apple hat eine eigene Version von gcc und den ganzen Zubehör von GNU. Leider hab ich nicht gefunden wie hier der ld bei einen Mac lauft da hilft googln wie man will auf englisch gibt es zwar was aber das ist ziemlich lang und mir zu kompliziert und bevor ich was falsch mache lass ich es liber. Aber es ist in Assembler wie NASM möglich ein Kernel zu bauen. Hab ich auch schon. Bin bis zum pm gekommen  8-). Ein C-kernel sollt auch möglich sein wenn man es in eine binäre Datei verwandelt. Aber stand nicht wie nur das es möglich ist. Na ja muss ich mich mal umsehen  :cry: :cry: Trotzdem Danke an alle :mrgreen:

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 19. March 2011, 21:14 »
Wieso baust du dir dann nicht einfach den richtigen GCC und alles was dazu gehoert?
Du musst ja nicht mal was ueberschreiben. Der GCC von Apple sollte es doch schaffen den GCC zu bauen, oder?
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

BigBoesche

  • Beiträge: 15
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 19. March 2011, 22:14 »
Weiß ich nicht wo bekomm ich gcc und welche version da komm ich leider öfters durcheinander. In ein englischen Beschreibung wie man den Insterliert ist das echt nicht einfach. Na ja ich hab erstmal eh ein anders Projekt. Bitte nicht lachen: ein Interpreter  :-D aber nur so aus langeweile, kann ja nicht schwerer sein als ein Betriebssystem wie DOS. Was ich an NASM schon in der Art geschaft habe, jedenfalls eine Abgespeckte version :D
« Letzte Änderung: 20. March 2011, 14:45 von BigBoesche »

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 20. March 2011, 12:09 »
ICh weisz nicht, ob du das Tutorial von Ubuntuusers verwenden kannst, aber da wird erklaert wie du eine neue Version bauen kannst. Am besten du nimmst nicht die neuste Version vom GCC sondern eher ein oder zwei davor. Gentoo verwendet momentan zum Beispiel 4.4.5 und ich hatte mit der noch keine Probleme.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

DerHartmut

  • Beiträge: 236
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #14 am: 20. March 2011, 19:20 »
Meine ehrliche Meinung: Wenn man nicht weiß, wie man sich einen Compiler baut und diesen installiert (auch wenn es unter Mac ist) dann sollte man sich vielleicht erst einmal daran üben und dann in die Doku einlesen und dann mit OS-Dev beginnen...
$_="krJhruaesrltre c a cnp,ohet";$_.=$1,print$2while s/(..)(.)//;
Nutze die Macht, nutze Perl ;-)

PNoob

  • Beiträge: 106
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #15 am: 20. March 2011, 23:12 »
@rizor: warum denn nicht direkt das Tut von osdev.org? da wird afaik mac auch drin erwähnt

PNoob

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 20. March 2011, 23:38 »
Weil ich das tut nicht kannte. Habe das bauen des Compilers von der Seite gelernt und seitdem mir nie wieder ein Tut in der Richtung angeschaut.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

 

Einloggen