Autor Thema: c++ linken problem  (Gelesen 8548 mal)

MrPerfekt

  • Beiträge: 26
    • Profil anzeigen
Gespeichert
« Antwort #20 am: 13. May 2010, 18:49 »
ok irgentwie doch noch nicht
ich bekomme danach eine datei raus mit der ich nichts anfangen kann
weder mit objcopy noch direct als bin datei

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #21 am: 13. May 2010, 18:59 »
Das objcopy macht auch keinen Sinn mehr auf eine "flache Binärdatei", insofern kannst du das sowieso weglassen. Ansonsten weiß ich nicht, was du damit gerne "anfangen" würdest. Wenn du das mal genauer spezifizieren könntest und dann auch noch sagst was dann passiert bzw. wieso es nicht geht, dann könnte man dir vielleicht helfen.

edit: Das Problem ist wahrscheinlich (wie ich oben schon erwähnt hatte), dass du ld nicht sagst, an welche Adresse der Code gelinkt wird. An genau diese Adresse muss der Bootloader dann auch den Code laden (sonst funktionieren absolute Jumps/Calls, Datenzugriffe, etc... nicht, was hoffensichtlich einsichtig sein sollte).

edit2: Was ganz wesentliches vergessen: Dein Bootloader weiß nicht an welcher Adresse innerhalb der Datei sich der Einsprungspunkt (also zB main) befindet. Das ist auch einer der Gründe warum man ungern auf ein Dateiformat verzichtet (wie bereits oben erwähnt). Aber mit irgendeiner weiteren Frickellösung kriegt man auch das hin.
« Letzte Änderung: 13. May 2010, 19:07 von bluecode »
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

MrPerfekt

  • Beiträge: 26
    • Profil anzeigen
Gespeichert
« Antwort #22 am: 13. May 2010, 20:53 »
sorry wenn ich nocheinmal störe
irgentwie kann ich mit dem file dass dabei rauskommt nichts anfangen

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #23 am: 13. May 2010, 20:59 »
Vielleicht solltest du dann doch erstmal den einfachen Weg nehmen und GRUB benutzen.

Sich absichtlich für den schwereren Weg zu entscheiden, weil man eine Herausforderung sucht, ist schön und gut, aber dann darf man nicht erwarten, dass andere einem die Arbeit abnehmen. Wenn du dir einen anständigen Bootloader zutraust, solltest du auch deine Binaries halbwegs im Griff haben.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #24 am: 13. May 2010, 22:50 »
irgentwie kann ich mit dem file dass dabei rauskommt nichts anfangen
Wenn du Hilfe willst, dann solltest du sehr viel genauer erklären wo du ein Problem hast. Nichtmal meine Kristallkugel hilft mir da gerade weiter. :-D
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #25 am: 14. May 2010, 03:55 »
Und, ohne dir zu Nahe treten zu wollen, ein bisschen Rechtschreibung (oder zumindest eine automatische Rechtschreibprüfung, Firefox hat sowas eingebaut) macht Posts grundsätzlich besser lesbar.

MrPerfekt

  • Beiträge: 26
    • Profil anzeigen
Gespeichert
« Antwort #26 am: 14. May 2010, 08:08 »
könnt ihr mir fl noch sagen warum ich mit dieser datei nichts anfangen kann
bzw wie ich es schaffe das der startpunkt mein 1. befehl ist

hab schon allemöglichen optionen ausprobiert und fiel gegoogelt

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #27 am: 14. May 2010, 08:46 »
bzw wie ich es schaffe das der startpunkt mein 1. befehl ist
Indem du diejenige Funktion in eine eigene Sektion packst (siehe gcc-Dokumentation zu __attribute__((section("blub")))). Dann brauchst du noch ein Linkerskript (siehe OSDev für Einsteiger bzw. das C++ mit GRUB Tutorial für Ideen). In diesem Linkerskript sollte dann die Sektion "blub" zu Beginn stehen, damit der Code deiner "Startfunktion" eben ganz am Anfang steht.
Aber wie bereits oben gesagt ohne richtiges Dateiformat kommen nur Frickellösungen raus, die dir irgendwann später wieder um die Ohren fliegen raus.

Zitat
könnt ihr mir fl noch sagen warum ich mit dieser datei nichts anfangen kann
Ich sage es nochmals in hoffentlich ausreichender Deutlichkeit: Das ist keine (ausreichende) Problembeschreibung. Damit kann hier niemand etwas anfangen. Das ist genauso wie zu sagen meine Kaffeemaschine funktioniert nicht ohne dem Techniker zu sagen welche Marke oder Modell es denn wäre, was denn eigentlich nicht funktioniert und natürlich ohne die Kaffeemaschine überhaupt zur Reparatur mitzubringen.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

MrPerfekt

  • Beiträge: 26
    • Profil anzeigen
Gespeichert
« Antwort #28 am: 16. May 2010, 11:19 »
sorry sorry
Ich hatte in Letzter Zeit viel stress.
Aber jetzt um einiges mehr Zeit.
Ich nehme nun einmal den guten ratschlag an und probiere das elf32 format in meinen Bootloader zu integrieren.
Ich melde mich ob es funktioniert hat.
Danke forerst einmal.

 

Einloggen