Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: scales of justice am 08. July 2006, 19:42

Titel: wo ist memcpy?
Beitrag von: scales of justice 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
Titel: wo ist memcpy?
Beitrag von: kevin 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...
Titel: wo ist memcpy?
Beitrag von: scales of justice 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
Titel: wo ist memcpy?
Beitrag von: kevin am 08. July 2006, 20:36
Ein globales Label _start sollte schon richtig sein.
Titel: wo ist memcpy?
Beitrag von: scales of justice 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
Titel: wo ist memcpy?
Beitrag von: kevin 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. ;)
Titel: wo ist memcpy?
Beitrag von: scales of justice 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?
Titel: wo ist memcpy?
Beitrag von: kevin 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.
Titel: wo ist memcpy?
Beitrag von: Another Stupid Coder am 09. July 2006, 12:48
Als Client würde ich irssi, bzw lostirc ( wenn x und gtk vorhanden ) empfehlen.