Atmel Studio Fehler beim Compilieren

Gast #4658036
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
Gast
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
Gast
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
Angehängte Dateien:
Gast
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.
Gast
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
Gast
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.
Gast
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?
Gast
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.
Angehängte Dateien:
Gast
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 ???
Gast
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.
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.