Problem mit dem AVR Studio und der avrlib

OP #1229981
Lesenswert?

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 #1230040
Lesenswert?

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
OP #1231175
Lesenswert?

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 :(
#1231223
Lesenswert?

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 #1231744
Lesenswert?

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 #1231863
Lesenswert?

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 #1231919
Lesenswert?

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 #1232045
Lesenswert?

>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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren