C und Assembler

Post Reply
Message
Author
nixkönner

C und Assembler

#1 Post by nixkönner »

Guten Abend
Ich habe ein Problem bei der KOmbination C/ASM. Wenn ich in den C Source eine eigene ASM Funktion einbaue, wird diese Funktion korrekt "verarbeitet", jedoch nicht die C-Funktionen wie z.B. strlen(), printf(),..
Welche Datei ausser den .o aus dem C uind ASM Source muss ich noch dazulinken, dass auch diese Funktionen funktionieren? :)

MfG
Nixkönner

bazik

Re: C und Assembler

#2 Post by bazik »

Zeig mal bitte einen Beispiel Code, weil ich dein Problem nicht so ganz verstehe.

Nixkönner

Re: C und Assembler

#3 Post by Nixkönner »

Ich habe eine C-Source Datei, welche eine Funktion aus einer ASM Source Datei nützt. Beide Dateien wurden entsprechend compiliert, wenn ich sie mit ld linken will erhalte ich
Test.o(.text+0x50): undefined reference to `strlen'
und weitere Fehlermeldungen mit printf und exit in dem Stil.
Welche Datei muss ich noch linken damit strlen, printf usw verwendet werden können?
C-Source:
#include <stdio.h>
#include <string.h>
extern myfunc();

int main(int *argc, char *argv[])
{
printf("Willkommen
");
myfunc();
printf("Funktion ausgefuehrt
");
c_func();
printf("C-FUnktion ausgefuehrt
");
exit();
}

ASM-Source:
global _myfunc
_myfunc:
push ebp
mov ebp,esp
sub esp,0x40
mov ebx,[ebp+8]

mov esp,ebp
pop ebp
ret


mfg
nixkönner

P.S. Der Source oben ist nur ein Ausschnitt, das strlen kommt weiter unten vor.

bazik

Re: C und Assembler

#4 Post by bazik »

Und wie kompilierst du beide Dateien? :)
Lass dir nicht alles aus der Nase ziehen ;)

Normalerweise erzeugst du mit dem Assembler deiner Wahl ein elf object und linkst es einfach mit "gcc blah.o -o blah".
Zumindest funzt es bei mir so ;)

Post Reply