Forum: Compiler & IDEs AVR GCC Linker Problem bei Einbinden einer lib.a


von Dan (Gast)


Lesenswert?

Hallo,
Es wurde zwar schon häufiger besprochen, aber ich bekomme das nicht auf 
die Reihe. Ich versuche über die Configuration Options im AVR Studio 
4.19 eine lib einzubinden, allerdings kommt immer die Fehlermeldung:
1
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/bin/ld.exe: cannot find -lcalc

Der Aufruf sieht so aus:
1
avr-gcc -mmcu=atxmega128a1 -Wl,-Map=main.map main.o   -L"C:\1-XMegaTester\Prog\."  -lcalc  -o main.elf

Die Lib liegt im Stammverzeichnis zusammen mit den *.c Dateien.
Kann mir jemand auf die Sprünge helfen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dan schrieb:
> Kann mir jemand auf die Sprünge helfen?

Die Option -v möglicherweise.

Ansonsten würde ich empfehlen, Vorwärtsstriche als Pfadnamentrenner
zu benutzen.  Damit umgeht man das Problem, dass möglicherweise die
Shell (die von "make" implizit aufgerufen wird) bswp. aus "\1" das
oktale Zeichen 001 (ASCII SOH) macht.

von Dan (Gast)


Lesenswert?

Vielen Dank erst einmal.
Das würde aber bedeuten, dass das Makefile von Hand erzeugt werden muss, 
oder? In den Configuration Options habe ich ja keine Möglichkeit die 
Pfadnamentrenner zu ändern.

Die Option -v hat leider nicht geholfen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dan schrieb:

> Das würde aber bedeuten, dass das Makefile von Hand erzeugt werden muss,
> oder?

Kann sein.

> In den Configuration Options habe ich ja keine Möglichkeit die
> Pfadnamentrenner zu ändern.

GCC hat keine "Configuration Options". ;-)

> Die Option -v hat leider nicht geholfen.

Die hilft natürlich auch nicht an sich, aber sie könnte dir erkennen
helfen, wo GCC die Bibliotheken suchen lässt.

von Detlev T. (detlevt)


Lesenswert?

Ich bin mir nicht sicher, ob der Linker auch im aktuellen Verzeichnis 
sucht. Schon einmal "-L ." ausprobiert?

von Dan (Gast)


Lesenswert?

Der Linker scheint im aktuellen Ordner nicht zu suchen, zumindest 
erscheint er nicht in der Ausgabe unter LIBRARY_PATH.

Ich habe jetzt das vom AVR Studio erzeugte Makefile hergenommen, kopiert 
und verwende das jetzt manuell. Da sind folgende Einträge für das 
Einbinden von "calc.a":

## Library Directories
LIBDIRS = -L"C:\1-XMegaTester\Prog\."

## Libraries
LIBS = -lcalc

Gibt es einen Unterschied zu folgenden Version aus einem alten Projekt?

USER_LIB = $(PROJ_DIR)/libs/calc.a

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Wenn du -lcalc angibst wird nach libcalc.a gesucht.

Das andere sind einfach nur-Make-Variablen.  Fragen dazu sind ungefär 
so, als würdest du fragen, "Was macht die Variable foo in diesem 
Programm anders als bar in jenem?". Auf die Verwendung kommt es an.

von Dan (Gast)


Lesenswert?

Das -lcalc hat das AVRStudio bei der Einbindung der lib "calc.a" selbst 
erzeugt.
Ich probiere jetzt die lib nach dem Einbinden über die Configuration 
Options umzubenennen in libcalc.a.

Nur ist das denn Sinn und Zweck der Sache?

Vielen Dank Euch.

von Oliver (Gast)


Lesenswert?

Über Sinn und Zweck braucht man nicht zu diskutieren, das ist einfach 
seit Anbeginn der Zeit so.

Oliver

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dan schrieb:
> Das -lcalc hat das AVRStudio bei der Einbindung der lib "calc.a" selbst
> erzeugt.

Das ist ein Bug, solltest du Atmel berichten.  Eine "calc.a" lässt
sich nie über eine -l-Option abbilden, die muss man immer explizit
auf der Kommandozeile angeben.

von Dan (Gast)


Lesenswert?

OK, da danke ich Euch.

Atmel wird sich wohl nicht mehr darum kümmern, jetzt wo es das AS6 gibt 
- leider funktioniert mit dem AS6 mein JTAG ICE MKII irgendwie nicht und 
der Atmel support weiß auch hier keinen Rat :-(
Deshalb muss wohl das AVR Studio 4 noch ein Stück "herhalten"...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dan schrieb:
> Deshalb muss wohl das AVR Studio 4 noch ein Stück "herhalten"...

Dann benenn' die Bibliothek doch in libcalc.a um.

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.