Guten Tag in die Runde, ich komme bei einem Fehler mit der Arduino IDE nicht mehr weiter. Es handelt sich um die IDE 1.8.19 auf Linux Mint 21. Sketche, die keine Bibliotheken verwenden, kann man kompilieren und hochladen, alles ok. Auch solche, in denen Bibliotheken eingebunden werden, die von der IDE mitgeliefert werden, wie etwa SPI machen keine Probleme. Anders etwa bei OneWire. Egal, ob ich sie mit der Bibliotheksverwaltung installiere, als zip herunterlade und über die IDE installiere, oder die zip-Datei selber entpacke und das Ergebnis in den Ordner "/home/ewald/Arduino/libraries" kopiere, das Ergebnis ist identisch: OneWire wird unter den "Beigetragenen Bibliotheken" aufgeführt, auch die Beispielsketche stehen zur Verfügung, beim Kompilieren eines Sketches, in den OneWire inkludiert wurde allerdings wird die Bibliothek nicht gefunden. Folgende Fehlermeldung wird angezeigt: ******************************************************** Arduino: 1.8.19 (Linux), Board: "Arduino Uno" arduino-builder -dump-prefs -logger=machine -hardware /usr/share/arduino/hardware -tools /usr/share/arduino/hardware/tools/avr -libraries /home/ewald/Arduino/libraries -fqbn=arduino:avr:uno -ide-version=10819 -build-path /tmp/arduino_build_758971 -warnings=none -build-cache /tmp/arduino_cache_120350 -prefs=build.warn_data_percentage=75 -verbose /home/ewald/Arduino/Test/Test.ino arduino-builder -compile -logger=machine -hardware /usr/share/arduino/hardware -tools /usr/share/arduino/hardware/tools/avr -libraries /home/ewald/Arduino/libraries -fqbn=arduino:avr:uno -ide-version=10819 -build-path /tmp/arduino_build_758971 -warnings=none -build-cache /tmp/arduino_cache_120350 -prefs=build.warn_data_percentage=75 -verbose /home/ewald/Arduino/Test/Test.ino Using board 'uno' from platform in folder: /usr/share/arduino/hardware/arduino/avr Using core 'arduino' from platform in folder: /usr/share/arduino/hardware/arduino/avr Detecting libraries used... "/usr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-I/usr/share/arduino/hardware/arduino/avr/cores/arduino" "-I/usr/share/arduino/hardware/arduino/avr/variants/standard" "/tmp/arduino_build_758971/sketch/Test.ino.cpp" -o "/dev/null" Generating function prototypes... "/usr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-I/usr/share/arduino/hardware/arduino/avr/cores/arduino" "-I/usr/share/arduino/hardware/arduino/avr/variants/standard" "/tmp/arduino_build_758971/sketch/Test.ino.cpp" -o "/tmp/arduino_build_758971/preproc/ctags_target_for_gcc_minus_e.cpp" /home/ewald/Arduino/Test/Test.ino:1:21: schwerwiegender Fehler: OneWire.h: Datei oder Verzeichnis nicht gefunden Kompilierung beendet. exit status 1 Fehler beim Kompilieren für das Board Arduino Uno. ********************************************************** Leider verstehe ich davon nur die letzten 5 Zeilen... In den Ordner für die mitgelieferten Bibliotheken kann ich wegen fehlender Rechte nichts hineinkopieren, Neustarts der IDE und des Rechners bringen nichts, ebensowenig wie eine Neuinstallation der IDE. Auf meinem Windows Rechner hatte ich dieses Problem nicht. Aber der existiert nicht mehr. Wenn jemand eine Lösung wüsste, wäre ich dafür sehr dankbar.
Georg schrieb: > beim Kompilieren eines Sketches, > in den OneWire inkludiert wurde Und wie hast Du das gemacht? Spitzklammern oder Anführungszeichen?
Georg schrieb: > OneWire.h: Datei oder Verzeichnis nicht gefunden Dem Compiler wird der Pfad nicht bekannt sein wo sich die Datei befindet. Du müßtest halt wahrscheinlich schreiben:
1 | include "<kompletter Pfad/OneWire.h>" |
Zweite Sache, heißt die Datei wirklich OneWire.h oder heißt sie eher onewire.h? Bei Linux ist das entscheident. Diese Groß-/Kleinschreibung ist bei Filenamen für Headerdateien nicht unbedingt üblich, die werden oftmals komplett klein geschrieben. Also noch mal kontrollieren und den Aufruf so schreiben wie die Datei auch auf der Platte heißt. Georg schrieb: > In den Ordner für die mitgelieferten Bibliotheken kann ich wegen > fehlender Rechte nichts hineinkopieren Doch das geht schon mit
1 | sudo cp <source> <destination> -p |
Mit -p werden die Berechtigungen mit kopiert. Georg schrieb: > Auf meinem Windows Rechner hatte ich dieses Problem nicht. Linux tickt halt etwas anders als Windows.
Hans schrieb: > Du müßtest halt wahrscheinlich schreiben: was Harald K. (kirnbichler) geschrieben hat ;)
Alexander schrieb: > Hans schrieb: >> Du müßtest halt wahrscheinlich schreiben: > > was Harald K. (kirnbichler) geschrieben hat ;) Das hat er ja gerade nicht verstanden. Statt den TA zu verarschen hätte man ihm ja auch gleich helfen können. Was soll das? Wenn du den Namen deiner Bibliothek in Doppelanführungszeichen setzt, schaut der Compiler in dem Verzeichnis nach wo der Sketch ist Bsp.: #include "Adafruit_GFX.h". Mit Spitzklammern wird in dem Standard-Arduino-Library Verzeichnis gesucht also unter Linux dann in /home/georgwa/Arduino/libraries/ Beispiel:#include <GxEPD2_BW.h> Woher ich das weiss? Ratet mal.
Joe schrieb: > Wenn du den Namen deiner Bibliothek in Doppelanführungszeichen setzt, Anführungszeichen. Nix "doppel". Verwirr' die Leute nicht mit falschen Begriffen. " - Anführungszeichen ' - Hochkomma bzw. Apostroph
Kommt wohl von "double quotes" und 'single quotes' nicht zu verwechseln mit „Gänsefüßchen“ ;)
:
Bearbeitet durch User
Harald K. schrieb: > Anführungszeichen. Nix "doppel". Verwirr' die Leute nicht mit falschen > Begriffen. > > " - Anführungszeichen > ' - Hochkomma bzw. Apostroph Nein, eben nicht. Du verwirrst die Leute. Du redest von Windoofs. Er hat aber LINUX gesagt. Und mein Sketch kompiliert einwandfrei, siehe Anlage. Möglicherweise macht die Spracheinstellung noch einen Unterschied. Deswegen läuft bei mir alles auf EN gestellt.
Joe schrieb: > Harald K. schrieb: >> Anführungszeichen. Nix "doppel". Verwirr' die Leute nicht mit falschen >> Begriffen. >> >> " - Anführungszeichen >> ' - Hochkomma bzw. Apostroph > > Nein, eben nicht. Du verwirrst die Leute. Du redest von Windoofs. Er hat > aber LINUX gesagt. Jetzt bin ich verwirrt (oder Du?) - Was hat der Name der Zeichen mit dem Betriebssystem zu tun?
Joe schrieb: > Du redest von Windoofs. Ich bin aus dem Kindergartenalter raus. Typographische Bezeichnungen sind betriebssystemagnostisch, und welche Zeichen für #include-Anweisungen in C- oder C++-Code verwendet werden, ebenso.
Joe schrieb: > Wenn du den Namen deiner Bibliothek in Doppelanführungszeichen setzt, > schaut der Compiler in dem Verzeichnis nach wo der Sketch ist > > Bsp.: #include "Adafruit_GFX.h". Das ist in erster Naeherung nicht ganz richtig. Berichte mal, was passiert wenn Du eine Datei "conf.h" inkludierst die aber nicht "in dem Verzeichnis nach wo der Sketch ist" existiert! -> Richtig, den gesamten Include-Pfad durchsuchen. Bei einer conf.h hast Du eine gute Chance irgendeine Datei zu bekommen. Aus https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html:
1 | 2.3 Search Path |
2 | |
3 | By default, the preprocessor looks for header files included by the quote form of the directive #include "file" first relative to the directory of the current file, and then in a preconfigured list of standard system directories. For example, if /usr/include/sys/stat.h contains #include "types.h", GCC looks for types.h first in /usr/include/sys, then in its usual search path. |
Das passiert mir nicht noch mal. Vor allen Dingen die "preconfigured list of directories" kann Dich richtig verwirren.
Guten Abend, und danke für die Diskussion, auch wenn ich ihr nicht überall hin folgen konnte. Den Unterschied, den Spitzklammern und Anführungszeichen bei der Inkludierung der Bibliotheken machen, kannte ich und habe beides probiert. Auch so, dass ich Anführungszeichen verwendet habe, und die Bibliothek im Sketchverzeichnis hatte. Gleiche Ergebnis. Am Pfad hatte ich nichts geändert, weil es in der Vergangenheit nie nötig war, um zu funktionieren, und er einfach auch stimmte. Dass die Sache Case-Sensitive ist, habe ich auch berücksichtigt. Ich hatte gehofft, dass ich nicht der einzige Linuxnutzer bin, der diese Schwierigkeiten hat, und vielleicht jemand schreiben würde:" Klar, war bei mir auch, und da muss man ......". Denn mein System weist keine Besonderheiten auf. Ist aber egal. Ich habe jetzt auf dem gleichen Rechner die neue Arduino-IDE 2.irgendwas installiert, und es funktionierte sofort. Also ein wenig much ado about nothing, tut mir leid. Aber interessieren würde mich immer noch, woran es hing. Dank an alle, die sich geäußert haben und einen schönen Abend noch.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.