Moin Moin
Es wurde ja weiter oben schon gesagt das dir die Implementierung für die Funktion fehlt.
Ich erklärs nochmal praktisch mit Beispiel :
undefined reference to `xyz'
Bedeutet das irgendwo ein Funtionsprototyp definiert wird aber keine Implemetierung da ist.
Beispiel:
Code:
int summe(int a, int b, int c);
Jetzt ist ein Prototyp ja keine Funktion, sonder nur eine Art Beschreibung,
wie die Funktion aufgerufen wird.
Und die Prototypen stehen in dem Header (.h).
Dazu gibt es immer eine Implementierung :
Code:
int summe(int a, int b, int c) {
return a + b + c;
}
Die steht klassischer weise in der .c-Datei zum Header.
Und genau die fehlt dir für fifo_init (wird wohl fifo.c sein).
Die fifo.c steht übrigens auch im Wiki.
Weil :
Der Compiler macht aus fifo.c und fifo.h ein fifo.o.
Alle Funktionen für die fifo-Sachen stecken in dem fifo.o.
Aus den Prototypen in fifo.h und main.c baut er ein main.o
Da stecken nur aufrufe für die fifo-Funktionen drin, die der Compiler
anhand der Prototypen gebaut hat.
Jetzt kommt der linker und hängt im Prinzip die fifo.o an die main.o dran und sorgt dafür das die Aufrufe an der richtigen Stelle landen. (sehr vereinfacht gesagt).
Und da stolpert er über die fehlende fifo_init.
Ich denke mal damit kannst du das Problem auch selber in den Griff bekommen.
Gruß
Sebastian
Lesezeichen