Forum: Compiler & IDEs Pfade für Include setzen Linux


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Stefan W. (stefanw)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe meinen Linuxrechner (Debian Jessie) vorbereitet, um AVR unter C 
damit zu programmieren.
Ich habe installiert:
 avr-libc , binutils-avr , gcc-avr , avrdude , avr8_burn-o-mat , geany

Bis zum Burn-O-Mat funktioniert auch alles (Flash lesen & schreiben),
aber das Compilen irgendwie nicht.
In Geany habe ich lediglich eingestellt, was hier
 https://wiki.ubuntuusers.de/AVR/#Einrichten-einer-Entwicklungsumgebung-2
beschrieben ist.
Sobald der Compiler auf #include <avr/io.h> trifft sagt, er daß er die 
Datei nicht findet.
Include Dateien, speziell auch die io.h,  sind bei mir in:
/usr/lib/avr/include/avr
vorhanden.

Übersehe ich irgendwas simples ?
Muss man den Pfad noch irgendwo einstellen, damit der avr-gcc sie findet 
?
Irgendwie stehe ich auf dem Schlauch, kann jemand helfen ?

Vielen Dank im Voraus,
viele Grüße
Stefan

von linux for everyone (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Crosscompile? Hast du ARCH richtig gesetzt?

von Andreas B. (bitverdreher)


Angehängte Dateien:

Bewertung
-1 lesenswert
nicht lesenswert
Hi,
Du brauchst ein Make File. Hier mal ein Beispiel.

Gruß
Andreas

von Daniel A. (daniel-a)


Bewertung
1 lesenswert
nicht lesenswert
avr-gcc sollte das include verzeichniss eigentlich selbst kennen. Kannst 
du mal die ausgabe von "make" im verzeichnis mit dem Makefile posten?

von Johann L. (gjlayde) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Übersetz mal zusätzlich mit -v, das zeigt die Suchpfade mit an.

Wenn die Pfade nicht von allein gefunden werden, hast du eine kaputte 
Installation / Distribution.

von Andreas B. (bitverdreher)


Bewertung
0 lesenswert
nicht lesenswert
Hi,
woher soll avr-gcc denn die include pfade kennen? Die sind auch abhängig 
von der Installation. Ohne diese zu übergeben wird der arme Compiler 
wohl ziemlich im Dunkeln tappen.

Gruß
Andreas

: Bearbeitet durch User
von Oliver S. (oliverso)


Bewertung
0 lesenswert
nicht lesenswert
Den/die Pfade zu den Systemincludes kennt jede normale 
Compilerinstallation, wenn sie den richtig konfiguriert wurde. Da muß 
man nichts übergeben.

Oliver

von Andreas B. (bitverdreher)


Bewertung
0 lesenswert
nicht lesenswert
Hmm, dann würde mich aber mal interessieren, wo die include Pfade dann 
hinterlegt sind.
Ein einfaches aufrufen des avr-gcc funktioniert bei mir nämlich aus 
gleichem Grund auch nicht. Das stört mich aber nicht weiter, da ich mit 
make files arbeite.

Edit: Nehme alles zurück. Mir ist gerade aufgefallen, daß geany in der 
Grundeinstellung gcc statt avr-gcc aufruft. Ich verwende geany 
normalerweise nicht. Habe geany nur mal interessehalber irgendwann 
einmal installiert.

An den TO: Vermutlich mußt Du nur avr-gcc statt gcc unter "Erstellen" -> 
"Kommandos zum Erstellen konfigurieren" eingeben.
Aber ich würde Dir trotzdem die Verwendung von make files empfehlen. Das 
ist um einiges komfortabler.

Gruß
Andreas

: Bearbeitet durch User
von Oliver S. (oliverso)


Bewertung
0 lesenswert
nicht lesenswert
Die werden wie bei jedem gcc bei der Kompilierung der toolchain 
festgelegt. Wenn es bei dir nicht funktioniert, passt die avr-gcc nicht 
zu deiner Distribution, oder die Pfade sind ungewöhnlich.

Oliver

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
> dann würde mich aber mal interessieren, wo die include Pfade dann
> hinterlegt sind.

Die stehen in den ausführbaren binaries drin und werden beim Compilieren 
als Konfigurierbarer Parameter festgelegt.

von Andreas B. (bitverdreher)


Bewertung
0 lesenswert
nicht lesenswert
Danke! Ich dachte schon, ich hätte da im Dickicht der /etc Dateien etwas 
übersehen.

Gruß
Andreas

von Johann L. (gjlayde) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Andreas B. schrieb:
> woher soll avr-gcc denn die include pfade kennen? Die sind auch abhängig
> von der Installation. Ohne diese zu übergeben wird der arme Compiler
> wohl ziemlich im Dunkeln tappen.

Mit Verlaub -- dann hat dein Distributor Schrott produziert.

GCC erwartet eine Standard-Pfadstruktur in --prefix.  Falls diese nicht 
verwendet wird, siehe configure --help.

Wenn also eine Distribution die Header irgendwohin legt und erwartet, 
dass der Anwender rausfindet, wo der Distributor die Header versteckt 
hat, dann ist das einfach Schrott.

: Bearbeitet durch User
von Stefan W. (stefanw)


Bewertung
0 lesenswert
nicht lesenswert
Hallo ihr alle,

zunächst herzlichen Dank für Eure Hilfe.
Den Eintrag vom Gast habe ich nicht verstanden.
Andreas B., ich arbeite ebenfalls mit makefiles. Ich hatte hier eines 
verwendet, bei dem ich mir sicher war, daß es funktioniert,
ich habe nämlich eine fast identische Installation auf einem anderen 
Rechner.
[Danke Dir für das makefile, ich werde es mal mit meinen 
ver-/abgleichen.]
Deshalb habe ich ja auch nicht verstanden, warum er diese Pfade nicht 
gefunden hat. Hier bin ich der Auffassung wie Daniel und Oliver S.,
war mir aber am Ende auch nicht mehr sicher.
Verdacht, war irgendwas, wie es Johann geschrieben hatte.

Nachdem ich jetzt gerade nochmal alles mit Ruhe und einem Tag Abstand 
nachvollzogen habe, konnte ich den Grund finden:
In den (Geany-)Einstellungen "Kommandos zum Erstellen konfigurieren" 
haben sich irgendwie, wie das passiert ist, weiß ich auch nicht,
statt meiner Eingaben "make all" und "make program" irgendwelche "gcc 
-Wall ....." Einstellungen widergefunden.
Das hatte ich dann gestern abend spät übersehen. Reproduzieren kann ich 
es auch nicht.

Jetzt funktioniert erst mal alles, wie es soll.

Ich danke Euch für Eure Antworten,
alle und die Summe waren mir sehr hilfreich.
Viele Grüße
Stefan

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]
  • [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.