Forum: Mikrocontroller und Digitale Elektronik Atmel Studio Fehler beim Compilieren


von Arwi (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

Arwi schrieb:
> Wie kann ich die Fehlermeldungen beseitigen?

du must die libasuro.a dem linker mit übergeben.

von Arwi (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von Arwi (Gast)


Angehängte Dateien:

Lesenswert?

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

von Peter II (Gast)


Lesenswert?

Arwi schrieb:
> Link-Einstellungen und auch dass die libasuro.a

lis werden ohne lib und .a eingebunden, bei dir also nur mit asuro

von Arwi (Gast)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

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

von Arwi (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von Arwi (Gast)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

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?

von Arwi (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

binde mal noch testweise die libasuro168.a mit ein.

von Arwi (Gast)


Lesenswert?

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 ???

von Arwi (Gast)


Lesenswert?

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.

von Arwi (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.