Forum: Mikrocontroller und Digitale Elektronik Eclipse lib richtig linken


von Jay B. (cellardoor)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich hab folgendes Problem und weiß nicht mehr weiter

Ich möchte eine Funktion aus der NXP lib LPC17xx_ssp.c verwenden und 
bekomme immer die Fehlermeldung/Error "undefined reference to 
SSP_ReceiveData"

Ich denke, dass ich die lib richtig verlinkt habe und auch included, 
kann mich aber auch täuschen. Ich verwende Eclipse als IDE

Was mir noch aufgefallen ist, dass alle Funktionen in der lib mit einem 
grauen Strich durchgestrichen sind, wie auf dem foto zu sehen ist

Kann mir jemand einen Tipp geben? Ich wäre sehr dankbar

mfg

von hp-freund (Gast)


Lesenswert?

Jay Bee schrieb:
> Ich denke, dass ich die lib richtig verlinkt habe

Hast Du auch schon eine lib?

Bis jetzt ist es ein Code er compiliert werden muss was ich da sehe.
Musst also im Makefile/Projekt diese mit aufnehmen - und alle anderen 
mit:
undefined reference to ...

von Jay B. (cellardoor)


Lesenswert?

Danke für die schnelle Antwort

Wie kann ich die Funktionen compilieren und im Projekt aufnehmen?

von hp-freund (Gast)


Lesenswert?

Benutzt Du ein Makefile?

von Jay B. (cellardoor)


Lesenswert?

Ja Ich hab die Einstellung "Generate Makefile automatically" aktiviert

von hp-freund (Gast)


Lesenswert?

Ich habe immer ein eigenes Makefile. Deshalb vermute ich das es hier 
anders geht als bei mir.

Steht in deinem so etwas wie: do not edit ?

von Jay B. (cellardoor)


Lesenswert?

Ja

von hp-freund (Gast)


Lesenswert?

Bis jemand kommt der eine bessere Lösung weiß:

um nur die einzelne Datei zu kompilieren würde ich sie in das Source 
Verzeichnis - wo auch main.c ist - kopieren bzw. einen link dort hin 
erstellen.

um alle Dateien aus dem lib Verzeichnis zu kompilieren,
Project -> C/C++ General -> Paths and Symbols -> Source Location
das lib src Verzeichnis eintragen.

Dann sollte das auch im makefile erscheinen und benutzt werden.

von hp-freund (Gast)


Lesenswert?

Sollte

Project -> Properties -> C/C++ General -> Paths and Symbols -> Source 
Location

heißen...

von Jay B. (cellardoor)


Lesenswert?

Ich habe jetzt beides versucht, aber der Error erscheint leider immer 
noch

von hp-freund (Gast)


Lesenswert?

Project -> C/C++ Index -> Rebuild

Dann sieh dir das makefile an bzw. zeig es + die genaue Fehlermeldung.

von Jay B. (cellardoor)


Angehängte Dateien:

Lesenswert?

Die Fehlermeldung

C:\workspace\LPC1758_RAD\Debug/../main.c:62: undefined reference to 
`SSP_ReceiveData'
collect2: ld returned 1 exit status
cs-make: *** [LPC1758_RAD.elf] Error 1

Das Makefile habe ich angehängt

von holger (Gast)


Lesenswert?

[c]
#ifdef _BUILD_WITH_EXAMPLE_
#include "lpc17xx_libcfg.h"
#else
#include "lpc17xx_libcfg_default.h"
#endif /* _BUILD_WITH_EXAMPLE_ */

#ifdef _SSP
...
[\c]

Schau in deine lpc17xx_libcfg_default.h
und sieh nach ob es dort ein

#define _SSP

gibt.

von hp-freund (Gast)


Lesenswert?

Ist
Libraries/Driver/src/
das oben abgebildete Verzeichnis das die
LPC17xx_ssp.c (Groß/Kleinschreibung)
enthält?
Wurde eine lpc17xx_ssp.o erstellt?

von holger (Gast)


Lesenswert?

>Wurde eine lpc17xx_ssp.o erstellt?

Selbst wenn sie erstellt wurde heisst das nicht das dort
etwas drin steht. Der ausgegraute Kram da rechts im Fenster
besagt eindeutig das ein #define _SSP fehlt.

von Jay B. (cellardoor)


Lesenswert?

Ich habe im lpc17xx_libcfg_default.h das #define _SSP ergänzt und jetzt 
kompiliert es ohne Error! Vielen Dank!

Ein kleines Problem hab ich noch seit dem ich das srv Verzeichnis hier: 
Project -> C/C++ General -> Paths and Symbols -> Source Location 
eingetragen habe, ist es im Project Explorer nicht mehr sichtbar. Gehört 
das so?

danke mgf

von noreply (Gast)


Lesenswert?

Jay Bee schrieb:
> Ich habe im lpc17xx_libcfg_default.h das #define _SSP ergänzt und jetzt
> kompiliert es ohne Error! Vielen Dank!

Das heißt aber nicht, das das Programm funktioniert. Der Fehler ist 
immer noch da, nur der Compiler erkennt es nicht mehr.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.