GELÖST - GNU Toolchain - #include <io.h> wird nicht gefunden

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
CaptainStone
Beiträge: 11
Registriert: 11.02.2011 03:05:50

GELÖST - GNU Toolchain - #include <io.h> wird nicht gefunden

Beitrag von CaptainStone » 04.04.2014 21:47:22

Liebe Leute,

ich komm alleine nicht mehr weiter. Hab alles gelesen, was ich zum Thema gefunden habe.

Ich habe mir die aktuelle GNU Toolchain 'avr32-gnu-toolchain-linux_x86_64' und die dazugehörigen Header Dateien 'atmel-headers-6.1.3.1475' von der Atmel Seite geholt.

Beide ausgepackt, den Pfad zum bin Verzeichnis erweitert und die Header Dateien ins 'Include' Verzeichnis gepackt. Trotzdem wird beim Compilien die '#include <avr32/io.h> nicht gefunden.

Dann habe ich den avr32-gcc mit dem Parameter -v aufgerufen, damit mir die Suchpfade angezeigt werden.

#include "..." search starts here:
#include <...> search starts here:
/home/user/avr32-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr32/4.4.7/include
/home/user/avr32-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr32/4.4.7/include-fixed
/home/user/avr32-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr32/4.4.7/../../../../avr32/include

Nachdem ich weiter hin die Fehlermeldung bekomme:
'error: avr32/io.h: No such file or directory'

hab ich praktisch schon überall die h Dateien hinkopiert:
/home/user/avr32-gnu-toolchain-linux_x86_64/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/bin/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/include/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/lib/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/lib/include/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/lib/gcc/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/lib/gcc/include/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/lib/gcc/avr32/4.4.7/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/lib/gcc/avr32/4.4.7/include/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/lib/gcc/avr32/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/lib/gcc/avr32/include/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/avr32/io.h
/home/user/avr32-gnu-toolchain-linux_x86_64/avr32/include/io.h

Der Compiler sagt trotzdem:

error: avr32/io.h: No such file or directory

Der gcc selber hat doch intern die Verzeichnis-Struktur schon vorgeben, von wo aus er nach dem Wurzelverzeichnis/bin etwas findet. Ich habe das an verschiedenen Stellen nachgelesen. Sobald er die ausführbare (/bin) findet, weiß er, wo der Rest zu finden ist. Sonst würde ja nicht diese Ausgabe kommen:
#include "..." search starts here:
#include <...> search starts here:
/home/user/avr32-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr32/4.4.7/include
/home/user/avr32-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr32/4.4.7/include-fixed
/home/user/avr32-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr32/4.4.7/../../../../avr32/include

Ich habe auch einige Diskussionen in anderen Foren über das Thema nachgelesen. Da wude z.B folgendes erklärt, nachdem jemand ebenfalls die io.h vermisste (aus dem Jahre 2012):

---
I'm trying to compile a very simple application using the AVR32-gnu-toolchain for x86_64. The target is an evk1105 with an uc3a0512 onboard. Problem being is that the toolchain seems to lack the avr32/io.h!
---

Die Antwort drauf ist ganz simple:

---
On Linux and Mac OS X you have to download and unzip header files separately into the Toolchain installation directory, $TOOLCHAIN/avr32/include.
---

Voila, und es hat bei ihm funktioniert. Dort ist es mir aber auch. Kann es sein, dass es da ein Problem mit der aktullen Toolchain gibt, oder ist das Brett vor meinem Kopf so unermesslich groß?

Michael
Zuletzt geändert von CaptainStone am 06.04.2014 04:52:19, insgesamt 1-mal geändert.

tHoRax
Beiträge: 560
Registriert: 22.12.2014 17:23:26

Re: GNU Toolchain - #include <io.h> wird nicht gefunden

Beitrag von tHoRax » 05.04.2014 01:45:31

On Linux and Mac OS X you have to download and unzip header files separately into the Toolchain installation directory, $TOOLCHAIN/avr32/include.
---

Voila, und es hat bei ihm funktioniert. Dort ist es mir aber auch. Kann es sein, dass es da ein Problem mit der aktullen Toolchain gibt, oder ist das Brett vor meinem Kopf so unermesslich groß?
Anscheinend findet gnu-avr32 den <io.h> nicht, das besagt ja die Fehlermeldung.
Da du ja wie oben beschrieben alle Headerdateien separat runtergeladen und im Verzeichnis TOOLCHAIN/avr32/include untergebracht(entpackt) hast, müsste der Compiler nach erneutem kompilieren diesen Header finden.Es könnte sein, dass es mittlerweile umbenannt ist z.B: io oder iostream etc. Musst halt mal ein Blick in die TOOLCHAIN/avr32/include werfen :) Und auch beim einbinden der Headerdatei im Quellcode die Headerdatei so einbinden: #include <io.h> anstatt #include "io.h", zweite Variante sucht die Headerdatei im aktuellen Verzeichnis, während die erstere "verzeichnisübergfreifend" in allen Verzeichnissen nach der Headerdatei sucht.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM

jackycola
Beiträge: 3
Registriert: 23.03.2014 13:48:52
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: GNU Toolchain - #include <io.h> wird nicht gefunden

Beitrag von jackycola » 06.04.2014 04:22:31

Hi,
laut http://www.atmel.com/Images/avr32-gnu-t ... readme.pdf (Punkt Layout) solltest Du den avr32 Ordner aus den Headerdateien unter avr32-gnu-toolchain-linux_x86_64/avr32/include/ ablegen. Der vollständige Pfad zur io.h wäre dann: /home/user/avr32-gnu-toolchain-linux_x86_64/avr32/include/avr32/io.h
Zumindestens konnte ich vorhin so ein kleines Testprogramm compilieren.

Viele Grüße,
Frank

CaptainStone
Beiträge: 11
Registriert: 11.02.2011 03:05:50

Re: GNU Toolchain - #include <io.h> wird nicht gefunden

Beitrag von CaptainStone » 06.04.2014 04:57:17

Servus Frank,
jackycola hat geschrieben: /home/user/avr32-gnu-toolchain-linux_x86_64/avr32/include/avr32/io.h
Frank
vielen Dank! Ich hatte es tatsächlich übersehen, dass im /include Verzeichnis NOCHMAL ein Verzeichnis mit 'avr32' angelegt werden muss. Jetzt klappt's - bin happy und kann nun den AVR32 über EMACS als IDE programmieren :-)

:hail:

Michael

Antworten