Hallo Leute,
Ich habe Atmel-Studio7 installiert und ein Mega8-Projekt angelegt.
Die library libasuro.a und die sieben Headerfiles sind im Projekt
afgenommen worden.
Die Definitionen adcValue und Init existieren in der Datei asuro.h
aber nach dem Complilieren werden folgende vier Fehlermeldungen
ausgegeben:
ld returned 1 exit status File:collect2.exe
recipe for target 'Test1.elf' failed File:Makefile
undefined reference to `adcValue' File:adc_low.c
undefined reference to `Init' File: main.c
// Der Code von main.c ist wie folgt:
#define F_CPU 1000000UL;
#include "asuro.h"
int main(void)
{
Init();
LineData(lineData); // Aufgrund dieser Zeile wird
adcValue-Fehlermeldung
// ausgegeben.
while(1){}
return(0);
}
Wie kann ich die Fehlermeldungen beseitigen?
Danke und Gruß
Armin
Arwi schrieb: > Wie kann ich die Fehlermeldungen beseitigen? du must die libasuro.a dem linker mit übergeben.
Danke Peter, Ich habe die libasuro.a dem Linker(unter Projekt->Properties->Toolchain->AVR/GNU Linker->Libraries), die library unter "Libraries" und den Library-Pfad unter "Library Search Path" mit übergeben. Aber es kommen trotzdem die vier Fehlermeldungen. Kannst du mir bitte weiterhelfen? Danke und Gruß Armin
Arwi schrieb: > Kannst du mir bitte weiterhelfen? zeige doch mal die Einstellungen. Wenn du die lib bei "Library Search Path" eingetragen hast, ist das zumindest merkwürdig.
Danke für die Antwort, Im Bild(Fehler1.jpg) siehst du auf dem linken Bild die Link-Einstellungen und auch dass die libasuro.a im Projekt unter dem Ordner Libraries aufgenommen worden ist, auf dem rechten Bild siehst du den Quellcode und auch die Fehlermeldungen wieder. Danke Armin
Arwi schrieb: > Link-Einstellungen und auch dass die libasuro.a lis werden ohne lib und .a eingebunden, bei dir also nur mit asuro
Kannst du mir bitte schrfeiben wie die Datei heißt? Ich habe das Library als Referenz im Projekt aufgenommen, so wird alles automatisch unter Linker und in Libraries-Projektordner aufgenommen wie du in dem Bild gesehen hast. Ich habe nur libasuro.a und libasuro168.a als Libs soweit ich weiß unter dem ASURO-LIB-Verzeichnis.
Das ist eine der idiotischen Eigenheiten von linux. Dem linker musst du "asuro" als Name übergeben. Der hängt dann selber vorne ein "lib" und hinten ein ".a" an, und sicht nach libasuro.a Oliver
Zuerst danke für deine Antwort Oliver, Das mit ASURO-Eingabe in Linker hat nicht funktioniert. Das einzige in ASURO-Lib m it asuro ist die Datei asuro.c Mein Betriesbssystem ist Windows-10 Armin
Arwi schrieb: > asuro.c also hast du gar keine lib? (libasuro.a) Dann musst du sie auch nicht als lib einbinden sondern einfach also normale c Datei.
Doch ich habe doch die libasuro.a im Projekt aufggenommen, das kannst du auch im Bild(Fehler1.jpg) sehen. Ich will nicht die ganzen C-Dateien von Lib im Projekt aufnehmen, dann brauche ich das Lib gar nicht. Ich will mit dem Lib arbeiten, was auch normal ist.
Arwi schrieb: > Ich will mit dem Lib arbeiten, was auch normal ist. am PC ja, bei µC meist nicht. Das Problem ist das es sehr viele unterschiede innerhalb der Atmels gibt. Dann braucht man für jeden seine eigene Lib. Da ist es einfach wenn man direkt die quellen verwenden. So mal dort dann besser optimiert (inline) werden kann. Hast du eine Ausgabe vom Compile vorgang? Steht dort die lib drin? gibt es das Symbol adcValue in der lib? Hast du eventuell C++ und C gemischt?
In der angehängten Datei siehst du die Compilerausgabe. Deine Meinung ist es besser die C-Dateien direkt ins Projekt aufzunehmen? Wieso existiert dann die Datei libasuro.a ? Schau bitte unter dem folgenden Link unter dem "Wichtig! Anpassen der Makefiles" http://www.asurowiki.de/pmwiki/pub/html/main.html Ich versuche so wie beschrieben den Fehler zu beseitigen.
In der Datei libausro.o existiert adcValue aber Init nicht! Die Projektdatei von AtmelStudio hat das Format .cproj, es existiert kein Makedatei im Projekt. Alle Einstellungen sind in der Projektdatei zu finden. Unetr dem Rubrik"Wichtig! Anpassen der Makefiles" unter dem folgenden Link ist die Einstellung in Make-Datei beschrieben, aber ich habe keine Make-Datei. http://www.asurowiki.de/pmwiki/pub/html/main.html Hat Jemand Compilerproblem bei einem Asuroprojekt mit Atmelstudio ???
Mit libasuro168.a bekomme ich die gleichen Fehlermeldungen. Auszug von der Seite "http://www.asurowiki.de/pmwiki/pub/html/main.html" Wichtig! Anpassen der Makefiles Die wichtigste Änderung der AsuroLib spielt sich im Hintergrund ab in den Makefiles. Hier wurde aufgeräumt um die Verwendung der Bibliothek für eigene Projekte zu erleichtern. Es gibt nur noch eine einzige Stelle, die man ändern muß um alle Pfadangaben, die mit der Lib zu tun haben, zu ändern. Das ganze kann natürlich nur funktionieren wenn nur noch diese neuen Makefiles verwendet werden. Aufgrund der zahlreichen Probleme, die manche Nutzer beimn Installieren der Bibliothek hatten, wurde der Installationsprozess vereinfacht. Die compilierte Asuro Bibliothek 'libasuro.a' muß nun nicht mehr in das Lib-Verzeichnis des AVR-GCC bzw. WinAVR Compilers kopiert werden, sondern verbleibt im Verzeichnis <INST_DIR>/lib. Statt dessen wird im Makefile der Pfad zur Bibliothek eingetragen. Der Verzeichnisname sollte mit normalem Slash (/) angegeben sein nicht mit Backslash (\). In den aktuellen Makefiles geschieht dies (siehe Examples Ordner) durch folgende Zeilen: Hinweis: ein # am Anfang in einer Zeile eines Makefiles bedeutet. Dies ist ein Kommentar, kein Kommando zum Ausführen Das Problem liegt nicht an \ oder /, weil es in der AtmelStuio-Projektdatei alle Pfade mit "\" eingegeben worden sind.
Ich habe das Problem gelöst indem ich alle Lib-C-Files im Projekt aufgenommen und das Lib vom Projekt entfernt habe. Danke an dieser Stelle an eure Aatworten.
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.
