Problem mit dem AVR Studio und der avrlib

OP #1229981
Hallo zusammen!

Ich hab hier folgendes Problem: Ich versuche die avrlib im AVR Studio 
bzw mit avrgcc zu nutzen. Ich hab allerdings dass Problem, dass ich die 
avrlib nicht richtig zum laufen bekomme. Ich habe die komplette avrlib 
in den avrgcc include ordner gesteckt, allerdings bekomme ich jetzt 
folgende Fehler:

c:/winavr-20080610/lib/gcc/../../avr/include/i2csw.h:37:20: error: 
global.h: No such file or directory
c:/winavr-20080610/lib/gcc/../../avr/include/i2csw.h:40:23: error: 
i2cswconf.h: No such file or directory

Bei einem anderen funktioniert das ganze allerdings wunderbar ohne 
fehler, er nutzt kein AVR Studio sondern macht es nur mit makefiles, da 
komm ich aber garnicht weit:
make: *** No rule to make target `main.elf', needed by `elf'.  Stop.

Wie gesagt, bei ihm funktioniert alles, er hat die avrlib im gleichen 
Verzeichnis.. kann mir da jemand weiterhelfen? Ich glaub zwar nicht dass 
euch mein Sourcecode weiterhelfen würde, aber ich hab ihn mal angehängt 
(ich nutze nicht sein Makefile)

Viele Grüße,
Flip
Angehängte Dateien:
Gast
Da fehlen im Studio die Pfade zu den include-Dateien.

Schau dir die Verzeichnisstruktur an. Vermutlich steckt globals.h in 
einem Unterverzeichnis, das musst du explizit von Hand in den 
Projektoptionen mit angeben.

>Ich habe die komplette avrlib in den avrgcc include ordner gesteckt,

Na ja, da du die Pfade sowieso von Hand eintragen musst, wäre das nicht 
nötig gewesen.

Oliver
Gast
Einfach das ganze WinAvr Paket installieren und alle Pfade und 
Verzeichnisse schön brav so sein lassen, wie sie das Setup angelegt hat.

Dann geht alles es prima....
Gast
>c:/winavr-20080610/lib/gcc/../../avr/include/i2csw.h:37:20: error:
>global.h: No such file or directory

Schau dir die Zeile an, in der der Fehler auftritt. Dann weisst du, was 
los ist.

Oliver
OP
main.o: In function `main':
E:\Projekte\AVRProjekte\Ätzanlage\default/../main.c:16: undefined 
reference to `i2cInit'
io.o: In function `lm75_init':
E:\Projekte\AVRProjekte\Ätzanlage\default/../io.c:36: undefined 
reference to `i2cSend'
E:\Projekte\AVRProjekte\Ätzanlage\default/../io.c:40: undefined 
reference to `i2cSend'
E:\Projekte\AVRProjekte\Ätzanlage\default/../io.c:44: undefined 
reference to `i2cSend'


Dann kommt wieder das :(
OP
Also er hat jetzt n andres Makefile gemacht, was bei mir auch 
funktioniert. Allerdings würde ich die AVRlib trotzdem gern im AVR 
Studio verwenden. Aber wie meinst du das mit den C-Dateien hinzufügen? 
Wenn du die normalen c dateien von dem Projekt meinst, klar die sind 
eingebunden.
Philipp H. wrote:

> Aber wie meinst du das mit den C-Dateien hinzufügen?
> Wenn du die normalen c dateien von dem Projekt meinst, klar die sind
> eingebunden.

Nein, die C-Dateien der Lib (oder halt die a-Datei, wenn es eine 
richtige Lib sein sollte). Mit den Headern machst du deinem Projekt ja 
nur bekannt, was über die Lib zur Verfügung steht. Aber der eigentliche 
Code der Lib muss ja auch noch zu deinem Projekt dazukommen.
OP
Alle c und h Dateien sind im include Ordner des AVR GCCs.

Ja Oliver, dabei kam das raus:

main.o: In function `main':
E:\Projekte\AVRProjekte\Ätzanlage\default/../main.c:16: undefined
reference to `i2cInit'
io.o: In function `lm75_init':
E:\Projekte\AVRProjekte\Ätzanlage\default/../io.c:36: undefined
reference to `i2cSend'
E:\Projekte\AVRProjekte\Ätzanlage\default/../io.c:40: undefined
reference to `i2cSend'
E:\Projekte\AVRProjekte\Ätzanlage\default/../io.c:44: undefined
reference to `i2cSend'
Gast
Na also, ein Schritt weiter. Jetzt findet er zumindest mal alle 
headerfiles.

Was jetzt noch fehlt, sind die .c-files der Funktionen, die du aufrufst. 
Da wird dir nichts anderes übrigleiben, als diese von Hand deinem 
Projekt hinzuzufügen. Das geht nicht automatisch. Da sich die 
avrlib-files auch gegenseitig aufrufen, musst du halt solange die 
benötigten Dateien hinzufügen, bis keine Fehlermeldungen mehr kommen.

Oliver
OP
Hmm aber welche Dateien soll ich einfügen? Ich hab schonmal alle 
benötigten avrlib dateien ins projektverzeichnis getan, aber ohne Erfolg 
bzw dann kam die selbe Meldung. Er vermisst ja auch nicht wirklich 
irgentwelche Dateien, das sind die einzigsten Fehler die kommen.
Gast
>Er vermisst ja auch nicht wirklich
>irgentwelche Dateien, das sind die einzigsten Fehler die kommen.

Doch. Der Linker vermisst die Funktionen i2cInit, usw., die du in deinem 
Code aufrufst, für die dein Projekt aber keinen Quellcode enthält.

Du musst die Dateien nicht ins Projektverzeichnis kopieren, sondern im 
Studio unter Source als Quellcodedateien eintragen. Nicht nur die, die 
du selber geschrieben hast, sondern auch alle die, die aus der avrlib 
benötigt werden. i2cInit ist lt. Doku in i2c.c enthalten. Also musst du 
auch i2c.c zu deinem Projekt hinzufügen. Vermutlich gibt es dann beim 
linken neue Fehlermeldungen, weil i2c.c wiederum andere Funktionen aus 
anderen Dateien benötigt. Die musst du dann halt suchen und auch 
hinzufügen, so lange, bis alles benötigte vorhanden ist.

Oliver

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.