mikrocontroller.net

Forum: Compiler & IDEs Problem mit dem AVR Studio und der avrlib


Autor: Philipp H. (flips)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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....

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Einfach das ganze WinAvr Paket installieren ...

avrlib != avr-libc

Oliver

Autor: Philipp H. (flips)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm die global.h und i2cswconf.h gehören zu meinem Projekt und sind im 
Projektordner direkt drinn, hab schon mehrere Wege probiert, zB die zwei 
Dateien zur AVRlib dazu zu tun, dann kommen aber auch Fehler.. :/

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Autor: Philipp H. (flips)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include "global.h"

// include project-dependent settings
#include "i2cswconf.h"

die avrlib bindet nur meine Projekteinstellungen ein, bzw sie versucht 
es

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Füg mal dein Projektverzeichnis in den Projektoptionen als 
Include-Directory hinzu.

Oliver

Autor: Philipp H. (flips)
Datum:

Bewertung
0 lesenswert
nicht 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 :(

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dass du auch die entsprechenden C-Dateien deinem Projekt hinzufügen 
musst (nicht nur die Header), ist dir aber schon klar, oder?
(oder halt die Library, falls es sich um eine "echte" Library handelt)

Autor: Philipp H. (flips)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Füg mal dein Projektverzeichnis in den Projektoptionen als
>Include-Directory hinzu.

Hast du das gemacht?

Oliver

Autor: Philipp H. (flips)
Datum:

Bewertung
0 lesenswert
nicht 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'

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philipp H. (flips)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.