Autor Thema: wo ist memcpy?  (Gelesen 4055 mal)

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« am: 08. July 2006, 19:42 »
ich will mit ld nasm code linken, es werden von ld aber nur 2 Ausgabeformate von nasm unterstützt:
win32     Microsoft Win32 (i386) object files
rdf       Relocatable Dynamic Object File Format v2.0


bei beiden bekom ich aber folgende Meldung von ld:
ld: warning: cannot find entry symbol start; defaulting to 0000000000010000

wie leg ich denn mit nasm einen einsprungpunkt fest?
ich hab einfach mal ein label "start" global gemacht, tuts aber nicht

bei windows hab ich immer elf oder obj genommen (weis nicht mehr) da wollte er keinen einsprungpunkt,
aber das format nimmt der linux ld nicht

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 08. July 2006, 19:56 »
Öhm, wenn du unter Linux einen ld hast, der kein ELF nimmt/produziert, dann hast du eine wirklich seltsame Installation - ELF ist ja immerhin das native Format von Linux...
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 08. July 2006, 20:02 »
ah doch du hast Recht er nimmt auch elf, dachte das hätt ich ausprobiert

er will aber trotzdem nen einsrpungpunkt, denn muss man doch irgendwie mit nasm festlgen können

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 08. July 2006, 20:36 »
Ein globales Label _start sollte schon richtig sein.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 08. July 2006, 20:41 »
wenn mans richtig schreibt jedenfalls -.-

noch ne Frage, mach jetzt nicht extra nen neuen thread auf:

ld meckert immer, dass er memcpy nicht finden kann,
in welcher Bibliothek von gcc isn das drin?
oder muss ich das für mein OS selbst schreiben?
denk aber eher, das braucht keine OS-spezifischen funktionen

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 08. July 2006, 20:54 »
Im Zweifelsfall selber schreiben - schon allein, um sich nicht zur GPL zu zwingen. Sind ja nur fünf Zeilen oder so.

Nachtrag: Wieso kommst du denn nicht ins IRC, wenn du so viele Fragen auf einmal hast? Brauchst du jetzt aber zumindest bis zur Halbzeit auch nicht mehr. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 09. July 2006, 10:48 »
das Problem ist ja, das memcpy muss ja genau das gleiche machen, und die gleichen Parameter erwarten, wie das memcpy von gcc,
und ich weis eben nicht welche Parameter er da übergibt

IRC würd ich gern, aber ich kapier auf Linux noch nicht wirklich wie ich da rein kom,
welcher IRC-Client ist denn für Linux gut?

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 09. July 2006, 11:08 »
Falls du das entsprechende Paket installiert hast: man memcpy (ja, auch für C-Funktionen gibt es man-Pages). Ansonsten lohnt sich nachinstallieren auf jeden Fall - für Debian wäre das das Paket manpages-dev.

Die Definition ist übrigens: void *memcpy(void *dest, const void *src, size_t n);

Wegen IRC-Client: Ich benutze im Moment Konversation (ja, ich bin anspruchslos ;)), habe aber auch schon xchat benutzt. KVIrc ist ansonsten recht beliebt und sicher auch umfangreicher.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 09. July 2006, 12:48 »
Als Client würde ich irssi, bzw lostirc ( wenn x und gtk vorhanden ) empfehlen.

 

Einloggen