Forum: Compiler & IDEs Problem beim einfügen von .a-Datein aus Library im AVRStudio


von Christoph P. (sirbundy)


Lesenswert?

Hallo zusammen!
Ich habe folgendes kleines Problem: Beim Versuch verschiedene .a-Datein 
aus einer Bibliothek ins Projekt einzufügen, bekomme ich den Error, dass 
die betreffenden Datein nicht zu finden seien. Bei anderen gibt es 
wiederrum keine Probleme.

"d:/programme/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/b 
in/ld.exe:  cannot find -l-llibConfigServer"

Allerdings sind Bibliothekspfade und Objektnamen 100x überprüft wurden 
und stimmen. Komisch ist nur, dass die Pfade in den Configuration 
Options nach dem Eingeben und Bestätigen zum Teil nachträglich wie "von 
Geisterhand" doppelt eingetragen sind.

Hab weder hier noch woanders irgend nen Hinweis auf nen denkbaren Fehler 
gefunden oder nen AVRStudio-Bug.

Vielleicht weiß ja jemand weiter. Danke!

von Olli R. (omr) Benutzerseite


Lesenswert?

Christoph P. schrieb:

> Ich habe folgendes kleines Problem: Beim Versuch verschiedene .a-Datein
> aus einer Bibliothek ins Projekt einzufügen, bekomme ich den Error, dass
> die betreffenden Datein nicht zu finden seien. Bei anderen gibt es
> wiederrum keine Probleme.

Pfade zu lang, Sonderzeichen oder Umlaute drin?

von Oliver (Gast)


Lesenswert?

>Allerdings sind Bibliothekspfade und Objektnamen 100x überprüft wurden
>und stimmen.

-l-llibConfigServer sieht komisch aus. Verdammt viele l's. Und -l- kennt 
zumindest meine Doku nicht als gültige Option. Das sieht aus, als ob da 
ein -l zuviel ist.

Die Namenskonvention besagt ausserdem, daß die Datei für 
-llibConfigServer liblibConfigServer.a heißen muß. Heißt die auch so?

Oliver

von Christoph P. (sirbundy)


Lesenswert?

Also an den Pfaden liegt es nicht, die Namenskonvention wurde auch 
eingehalten.
Der Hinweis mit dem doppelten -l ist aber schon mal richtig. Eine Datei 
davor wird scheinbar gar nicht erst "angenommen". Im makefile steht sie 
nämlich nicht drin. Dadurch das leere -l. Sehr komische Sache. Eine 
andere Datei aus dem selben Ordner wird nämlich eingefügt. Das versteh 
ich wirklich nicht.
Noch eine andere Frage: Werden für .o-Datein auch die Bibliothekspfade 
von LIBDIRS verwendet und durchsucht, oder gibt es da noch etwas wie 
OBJDIRS o.ä.?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Pfade, in denen nach Libs gesucht wird, werden mit -L angegeben, und es 
gibt eine Umgebungsvariable LD_LIBRARY_PATH.

Zeug wie OBJDIRS entspringen einzig und allein deinem Makefile, mit dem 
Linker selbst hat das zunächst überhauptnix zu tun.

Um Fehler im Makefile auszuschliessen, mache also den Aufruf des 
Linklaufs direkt von der Shell aus.

Bisher war dieser Aufruf hier noch nicht zu sehen.

Johann

von Oliver (Gast)


Lesenswert?

>Um Fehler im Makefile auszuschliessen, mache also den Aufruf des
>Linklaufs direkt von der Shell aus.

Die AVR-Studio das makefiles sind i.d.R. in Ordnung, das da der Eintrag 
einer lib fehlt, ist ja schon geklärt.

Wenn gar nichts geht, nimm halt das vom Studio erzeugte makefile, nenn 
es um, trag die fehlende lib per hand nach, und definiere das makefile 
für das Projekt als externes makefile.

Wie heisst denn die lib, die da nicht eingetragen wird?

Oliver

von Christoph P. (sirbundy)


Lesenswert?

So, ich danke euch erstmal für die Hilfe!
Ich hab mir jetzt ein wenig den Rat von Oliver zu Herzen genommen. Zwar 
hat die das Anpassen des makefiles per Hand auch nicht den gewünschten 
Erfolg gebracht, aber dafür das Verwenden eines makefiles eines 
Projektes, welches die selben Bibliotheken benutzt. Nun bin ich zwar 
immernoch nicht schlauer wo der Fehler lag, aber ein vorgefertigtes und 
funktionierendes make samt configuration lässt sich natürlich wesentlich 
einfacher auf seine Bedürfnisse anpassen :)
Also, nochmal vielen Dank für eure Mühe!

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.