Forum: PC Hard- und Software Atmelstudio6 lib einbinden


von Uschi (Gast)


Lesenswert?

Guten Abend,
ich möchte die Can lib von kreatives-chaos einbinden!
Mein Problem ist das ich nicht weiß wo ich LDFLAGS += -L. -lcan  im 
Atmel Studio eintragen soll!
Wäre sehr nett wenn mir jemand helfen könnte.

Lg
Uschi

: Verschoben durch Moderator
von Uschi (Gast)


Lesenswert?

Entschuldigung,
falsches Forum kann das bitte jemand nach Gcc Verschieben
Uschi

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


Lesenswert?

Nein, richtiges Forum.

Du hast ein Problem mit deiner PC-Software namens Atmel Studio, du
hast kein Problem mit dem GCC.  Im Gegenteil, du weißt ja bereits,
dass du dem GCC die passenden Optionen -L und -l mitgeben musst,
mehr kann der Compiler nicht für dich tun.

von Uschi (Gast)


Lesenswert?

Ich weiß aber nicht wo ich diese optionen in Atmelstuio6 eintragen muß!
Wäre nett wenn mir jeman das sagen kann!

Lg
Uschi

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


Lesenswert?

Ich auch nicht, da ich kein Windows benutze.  Allerdings wäre zu
vermuten, dass du irgendwo in den Projekteinstellungen Details zur
Parametrierung des Linkers bzw. des Link-Vorgangs findest.  An
dieser Stelle solltest du diese Optionen unterbringen.

Vorsicht aber mit „-L.“: das Verzeichnis „.“ ist das Verzeichnis,
aus dem heraus Atmel Studio dein Projekt compiliert.  Bist du dir
völlig sicher, welches Verzeichnis das ist?  Ich würde lieber mit
einem expliziten Pfad ins Rennen gehen.

von Stefan E. (sternst)


Lesenswert?

Project -> Properties -> Toolchain ->  AVR/GNU Linker -> Libraries

Oben "can" eintragen und unten ".".

von Uschi (Gast)


Angehängte Dateien:

Lesenswert?

Danke für Eure Hilfe.
Habe es so versucht

Stefan Ernst schrieb:
> Project -> Properties -> Toolchain ->  AVR/GNU Linker -> Libraries
>
> Oben "can" eintragen und unten "."
Leider kommt der Fehler "cannot find -lcan"
Habe ein Bild gemacht um es zu verdeutlichen.
Wäre Super wenn mir jemand sagen kann was ich falsch mache!

LG
Uschi

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


Lesenswert?

Uschi schrieb:
> Leider kommt der Fehler "cannot find -lcan"

Siehe:

Beitrag "Re: Atmelstudio6 lib einbinden"

2. Absatz

Dein Atmel Studio wechselt zum Ausführen des Makefiles sehr
wahrscheinlich nicht in das Verzeichnis, in dem sich deine
libcan.a befindet, sondern in irgendein anderes.  Fang' doch
erstmal mit einem absoluten Pfad hinter -L and.  Alternativ zu
-L und -l kannst du genausogut gleich <pfad dahin>/libcan.a
schreiben.  Es ist für den Linker kein Unterschied, ob er eine
Bibliothek durch explizite Nennung der .a-Datei auf der Kommando-
zeile oder durch die Option -l einbindet.

Schreib Vorwärtsschrägstriche, also c:/pfad/zur/lib/libcan.a,
keine Backslashes.  Je nach verwendeter Shell beim Ausführen von
«make» könnten Backslashes ggf. als Sonderzeichen gewertet werden
und müssten doppelt notiert werden (c:\\pfad\\zur\\lib\\libcan.a).

von Uschi (Gast)


Angehängte Dateien:

Lesenswert?

So jetzt habe ich eine neue Fehlermeldung
Siehe Bild!
Danke für Eure Hilfe!

Uschi

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


Lesenswert?

Uschi schrieb:
> So jetzt habe ich eine neue Fehlermeldung

Versuch mal herauszufinden, wo die genaue Kommandozeile steht, mit
der der Compiler und Linker aufgerufen werden, und poste diese hier.

Ich fürchte, dass die lib nicht weit genug hinten dort steht und
daher gar nicht in Betracht gezogen wird.

> Siehe Bild!

Kann man denn den Text nicht per copy & paste übernehmen?  Es ist
etwas lästig, für zwei "undefined reference"-Meldungen sich einen
überdimensionalen Screenshot ansehen zu müssen, in dem man dann
erstmal den eigentlichen Fehler suchen darf.

von Bernd S. (bernds1)


Lesenswert?

Im letzten Bild, obiges Fenster (Libraries) kommt der Name der Lib rein 
(z.B. libcan.a).
Im unteren Fenster nur der Pfad. Ich habe dort stehen: ..\.\
Die Lib, also das File *.a muß in diesem Fall im Projektverzeichnis 
stehen, also dort, wo *.c, *.h usw. sind.
Noch ein Hinweis: Die Lib hast du bestimmt an den Prozessor angepaßt, 
die Pins festgelegt usw. und dann compiliert, eh du sie im Studio 
verwenden willst?

Ich mach das seit Jahren so, erst im AVR-Studio und jetzt im 
ATMEL-Studio und es klappt auf jeden Fall.
Viel Erfolg!

von Uschi (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend,

Bernd S. schrieb:
> Im letzten Bild, obiges Fenster (Libraries) kommt der Name der Lib rein
> (z.B. libcan.a).
> Im unteren Fenster nur der Pfad. Ich habe dort stehen: ..\.\
> Die Lib, also das File *.a muß in diesem Fall im Projektverzeichnis
> stehen, also dort, wo *.c, *.h usw. sind.

Das habe ich jetzt versucht aber ohne Erfolg.

Bernd S. schrieb:
> Die Lib hast du bestimmt an den Prozessor angepaßt,
> die Pins festgelegt usw. und dann compiliert, eh du sie im Studio
> verwenden willst?

Das habe ich auch gemacht ich Verwende den AT90Can128.
Ich habe jetzt mal mein Programmverzeichnis gezipt und angehängt.
 Vielen Dank für Eure Hilfe
Uschi

PS Danke für Eure Geduld!

von Bernd S. (bernds1)


Angehängte Dateien:

Lesenswert?

Der Linker findet die can_init usw. nicht. Da ist nur die Definition 
vorhanden (im can.h), aber die eigentliche Implementation findet er 
nirgends. Also auch nicht in der libcan.a, darum hab ich mal eine 
"libcan_128.a" von mir eingebunden. Schon findet er alles und compiliert 
komplett. Meine "libcan_128.a" muß aber jetzt nicht unbedingt mit deinen 
Anforderungen übereinstimmen. Das war nur ein Test, ob er dann 
compiliert.
Das heißt, du mußt dir deine eigene libcan.a nochmal erstellen und im 
Studio einbinden.
Ich habe natürlich im Studio auch meinen Namen "libcan_128.a" 
eingetragen, damit er die lib findet. Schau es dir mal an und versuche 
das Projekt zu compilieren.
Also ist deine libcan.a nicht in Ordnung. Versuche die nochmal zu 
erstellen.
Ich hänge das komplette Projekt hier an. Viel Erfolg!

von Uschi (Gast)


Lesenswert?

Vielen Dank mit Deiner Lib geht es auch bei mir!
Vielen Vielen Dank!

Was muß man beim erstellen der Lib beachten?

Lg
Uschi

von Bernd S. (bernds1)


Lesenswert?

Uschi schrieb:
> Vielen Dank mit Deiner Lib geht es auch bei mir!
> Vielen Vielen Dank!
Das freut mich!

>
> Was muß man beim erstellen der Lib beachten?
>
Ich versuchs mal. Hab gerade keinen 128er da, deshalb das ganze nur 
theoretisch.

Im Verzeichnis "src" ist das makefile.
Dort den Prozessor einstellen:
1
# MCU name
2
MCU = at90can128
Ein Stück weiter unten die Prozessorfrequenz (in kHz) einstellen:
1
F_CPU = 14745600

Im gleichen Verzeichnis ist die config.h
Dort den Prozessor auswählen:
1
#define  SUPPORT_MCP2515      0
2
#define  SUPPORT_AT90CAN      1
3
#define  SUPPORT_SJA1000      0

Dann mit "make lib" die Library erstellen. Dabei darf keine 
Fehlermeldung kommen. Wenn das passiert ist, die gerade erstellte 
libcan.a, die config.h und die can.h in dein Verzeichnis "main" kopieren 
und dann sollte alles funktionieren.

Du kannst gern versuchen, ob deine Anwendung mit meiner libcan_128.a 
läuft. Aber ich weiß nicht, mit welcher Frequenz ich den Prozessor 
eingestellt habe. Kann 14745600 kHz sein oder auch 16000000 kHz.
Wenns funktioniert, ist es gut, wenn nicht, mußt du es schaffen, sie 
selbst zu erstellen :-)

von Uschi (Gast)


Lesenswert?

Super Erklärung,
werde es jetzt versuchen!

Vielen Dank!
Uschi

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.