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
Entschuldigung, falsches Forum kann das bitte jemand nach Gcc Verschieben Uschi
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.
Ich weiß aber nicht wo ich diese optionen in Atmelstuio6 eintragen muß! Wäre nett wenn mir jeman das sagen kann! Lg Uschi
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.
Project -> Properties -> Toolchain -> AVR/GNU Linker -> Libraries Oben "can" eintragen und unten ".".
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
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).
So jetzt habe ich eine neue Fehlermeldung Siehe Bild! Danke für Eure Hilfe! Uschi
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.
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!
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!
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!
Vielen Dank mit Deiner Lib geht es auch bei mir! Vielen Vielen Dank! Was muß man beim erstellen der Lib beachten? Lg Uschi
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 :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.