Forum: Compiler & IDEs objektcode in winavr einbinden


von oliver (Gast)


Lesenswert?

Hallo zusammen

ich sollte ein Objektfile mit der Endung .a mein winavr projekt
einbinden.
Kann mir jemand erklären, ob und wie das funktioniert?

Besten Dank

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

Eine Datei mit der Endung ".a" klingt schwer nach einer Library.
Hast Du das Passende Headerfile?

Ja:
Vermutlich heißt die Datei "lib<xyz>.a", und kann dann im Makefile
unter LDFLAGS (falls Du das Template von MFile verwendest) per
",-l<xyz>" (ACHTUNG: ohne "lib" und ohne Endung) dem Linker
bekannt gemacht werden.

Nein:
Besorge Dir das Headerfile und gehe zu "Ja:".

Ohne Headerfile wirst Du wohl kaum die Chance haben, die Funktionen
innerhalb der Library nutzen zu können (Du kennst die Prototypen ja
nicht und das passt dem Compiler genauso wenig ;).

von oliver (Gast)


Lesenswert?

Danke für deine Hilfe
ja, ich habe das Headerfile.
Jetzt bin ich aber noch mit dem MFile überfordert.
Wie muss ich das genau dem Linker bekanntgeben?
Die a-Datei heisst: libUSBP_StandAlone.
und das Headerfile: USBP_standalone_lib_compile.h

muss ich das im folgenden Teil im MFile angeben und wenn ja wie?

#---------------- Linker Options ----------------
#  -Wl,...:     tell GCC to pass this to linker.
#    -Map:      create map file
#    --cref:    add cross reference to  map file
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
LDFLAGS += $(EXTMEMOPTS)
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

Hi!

Ganz einfach:

LDFLAGS = -Wl,-Map=$(TARGET).map,--cref,-L.,-lUSBP_StandAlone

Zu den Parametern: -L. erweitert den Librarysuchpfad um das aktuelle
Verzeichnis und -lUSBP_StandAlone fügt die Library
"libUSBP_StandAlone.a" der Liste der zu verwendenden Libs hinzu...

von oliver (Gast)


Lesenswert?

vielen dank

das werde ich mal ausprobieren

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.