Autor Thema: Kann irgendwie nicht linken  (Gelesen 7338 mal)

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« am: 19. June 2007, 10:53 »
Ich bin auf Linux umgestiegen, und muss jetzt meine build-scripte meines Systems umschreiben.
Damit bin ich jetzt fast fertig, aber natürlich macht die letzte Zeile wieder Probleme ;)

Also:
Der relevante auszug aus ~/reos/kernel/link.txt
INPUT( ~/reos/kernel/kernelexe.obj
       ~/reos/kernel/_oop.obj
       ~/reos/kernel/kernel.obj
     )
All 3 Dateien sind vorhanden.

Wenn ich jetzt
ld -T ~/reos/kernel/link.txt -o ~/reos/kernel/kernel.bin ausführe (unter bash) bekomme ich die Meldung:
ld: cannot find ~/reos/kernel/kernelexe.objwo liegt das Problem??

ps.: verwende openSuSE 10.1

FreakyPenguin

  • Administrator
  • Beiträge: 301
    • Profil anzeigen
    • toni.famkaufmann.info
Gespeichert
« Antwort #1 am: 19. June 2007, 13:32 »
Wozu schreibst du denn die vollen Pfade in das Linkter-Skript?
Dort gehören auf jeden Fall relative Pfade rein, wenn du sie überhaupt dort angeben willst. Ich würde das eher mit Wildcards oder, falls du eh Make benutzt datit, erledigen.

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #2 am: 19. June 2007, 14:30 »
was haßt relativ?? von der Postion des scriptes aus??
./kernelexe.obj verursacht selbiges Problem.

make benutze ich nicht.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 19. June 2007, 14:33 »
es sollte (sogar ohne ./) gehen, wenn du den linker im verzeichnis ~/reos/kernel aufrufst.
Dieser Text wird unter jedem Beitrag angezeigt.

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #4 am: 19. June 2007, 15:23 »
nein, geht leider nicht :(
INPUT(
       kernelexe.obj
       _oop.obj
       kernel.obj
     )
RedEagle@linux-27ul:~/reos/kernel> ld -T ~/reos/kernel/link.txt -o ~/reos/kernel/kernel.bin
ld: skipping incompatible kernelexe.obj when searching for kernelexe.obj
ld: cannot find kernelexe.obj
RedEagle@linux-27ul:~/reos/kernel>

So wird übrigens die Datei erstellt:
nasm -f aout -o ~/reos/kernel/kernelexe.obj ~/reos/kernel/kernelexe.asmAuffällig ist, das kernelexe.obj ein anderes icon hat, als die anderen *.obj-Dateien. Mach nasm möglicherweise etwas falsch??
« Letzte Änderung: 19. June 2007, 15:26 von RedEagle »

FreakyPenguin

  • Administrator
  • Beiträge: 301
    • Profil anzeigen
    • toni.famkaufmann.info
Gespeichert
« Antwort #5 am: 19. June 2007, 15:32 »
Er sagt dir doch, was nicht stimmt:
Zitat
ld: skipping incompatible kernelexe.obj when searching for kernelexe.obj
Er erkennt das Format nicht.

Du musst bei nasm folgendes angeben:
nasm -f elf -o ~/reos/kernel/kernelexe.obj /reos/kernel/kernelexe.asm
« Letzte Änderung: 19. June 2007, 15:35 von FreakyPenguin »

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #6 am: 19. June 2007, 15:51 »
habe ich gerade im hex-editor gesehen ;)
Problem bleibt aber trotzdem bestehen (auch wenn das icon nun stimmt :)  )

FreakyPenguin

  • Administrator
  • Beiträge: 301
    • Profil anzeigen
    • toni.famkaufmann.info
Gespeichert
« Antwort #7 am: 19. June 2007, 15:53 »
Hm, hast du ein 64-Bit system?

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #8 am: 19. June 2007, 16:05 »
Linux? Ja

FreakyPenguin

  • Administrator
  • Beiträge: 301
    • Profil anzeigen
    • toni.famkaufmann.info
Gespeichert
« Antwort #9 am: 19. June 2007, 16:19 »
Dann musst du gcc und ld dazu bringen, keinen 64-Bit code zu erstellen, sonst versucht er 64-Bit ELF zu erstellen, der nasm macht aber 32-Bit ELF und die passen nich zusammen.

Beim ld müsste das ein "-m elf_i386" sein, und beim ld ein "-m32"

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 19. June 2007, 18:04 »
Nicht ganz on Tapic(aber ich wills halt ma loswerden):

es gibt jetzt uebrigens auch ne nasm version die 64-bit unterstuetzt. ist zar noch nicht stable aber es geht immerhin vorwaerz

http://nasm.sourceforge.net/
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #11 am: 19. June 2007, 19:29 »
OK, Vielen Dank.
Es kommen zwar noch ein paar Fehler (Einige symbole werden nicht aufgelöst), das legt aber wahrscheinlich am Code selber.

DANKE

FreakyPenguin

  • Administrator
  • Beiträge: 301
    • Profil anzeigen
    • toni.famkaufmann.info
Gespeichert
« Antwort #12 am: 19. June 2007, 19:31 »
@M. Nemo:
Da kann man doch gleich yasm nehmen ;-)

@RedEagle:
Kein Problem.

 

Einloggen