Probleme kompilieren von assembly-Datei - Fehler: undefined reference to `Funktion name'
Ich versuche, einen Blick auf test-Programm, mein professor hat uns, aber ich habe Probleme beim kompilieren. Ich bin auf Ubuntu 14.04. Ich bin kompilieren Sie es mit
gcc -Wall test.c AssemblyFunction.S -m32 -o test
Hatte ich Probleme beim ausführen von code auf einem 64-bit-Computer und lese, dass das hinzufügen von -Wand-und -m32 wird es ermöglichen, zu arbeiten. Zu tun, dass Feste, das erste problem hatte ich, aber jetzt bin ich immer die Fehler: undefined reference to `addnumbersinAssembly'.
Hier ist die C-Datei
#include <stdio.h>
#include <stdlib.h>
extern int addnumbersinAssembly(int, int);
int main(void)
{
int a, b;
int res;
a = 5;
b = 6;
//Call the assembly function to add the numbers
res = addnumbersinAssembly(a,b);
printf("\nThe sum as computed in assembly is : %d", res);
return(0);
}
Und hier ist die assembly-Datei
.global _addnumbersinAssembly
_addnumbersinAssembly:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp), %eax
addl 12(%ebp), %eax # Add the args
movl %ebp,%esp
popl %ebp
ret
Vielen Dank für Ihre Zeit. Ich habe versucht, dies herauszufinden, für Stunden, so dass ich für jede Hilfe dankbar.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, dass mit GCC sind Sie gehen zu wollen, um die zu entfernen
_
in Ihre assembler-file. Also diese Zeilen:Werden sollte:
Mehr Informationen zu diesem Thema finden Sie in diesem StackOverflow -Frage/Antwort.
Den
-m32
compile-parameter ist erforderlich, da der Assembler-code müssen Sie neu geschrieben werden muss, um support für einige 64-bit-Operationen. In Ihrem Fall war es die stack-Operationen. Die-Wall
ist es nicht notwendig, zu kompilieren, aber es funktioniert, schalten viele weitere Warnungen..c
ersetzen können (durch einen Unfall) den basic-code (Variablen und Funktionen), die erlaubt, dass ein C-Programm zu bedienen.