3-я библиотека: фатальная ошибка: Something.h: Файл не существует
Я создал этот вопрос, потому что нахожу много вопросов с похожими проблемами, поэтому я хотел бы предоставить справочный/более общий вопрос для такого типа проблем.
Для своих проектов я устанавливал сторонние библиотеки, клонируя их из Git-репозитория библиотеки в папку, указанную в файле preferences.txt в соответствии со значением sketchbook.path, в папку с именем libraries. Другими словами, если значение sketchbook.path равно /home/myuser/sketchbook, я клонирую репозитории в папку /home/myuser/sketchbook/libraries.
Затем в папке /home/myuser/sketchbook/myexample я сохраняю свой код myexample.ino, которому нужна библиотека с заголовочными файлами Something.h.
При нажатии кнопки «Проверить» в Arduino IDE возникает ошибка:
/usr/share/arduino/hardware/tools/avr/bin/avr-g++ -c -g -Os -Wall -fno-exceptions
-ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD
-DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -D__PROG_TYPES_COMPAT__
-I/usr/share/arduino/hardware/arduino/cores/arduino
-I/usr/share/arduino/hardware/arduino/variants/standard
-I/usr/share/arduino/libraries/SPI
/tmp/build6596169359663087897.tmp/LoRaSerialGateway.cpp -o
/tmp/build6596169359663087897.tmp/LoRaSerialGateway.cpp.o
LoRaSerialGateway.ino:15:18: fatal error: Something.h:
compilation terminated.
Полагаю, я не могу заставить avr-gcc скомпилироваться с использованием сторонней библиотеки. Знаете ли вы, как передать avr-gcc правильные пути к соответствующим библиотекам?
2 ответа
Лучший ответ:
Предполагая, что у вас уже есть работающая библиотечная система, то есть в каталоге .../libraries есть несколько библиотек, которые корректно компилируются или, по крайней мере, компилятор успешно их находит. И вы хотите добавить ещё одну библиотеку, например, «CrashAndBurn.h» и «CrashAndBurn.cpp», вам нужно поместить эти два файла в папку с именем .../libraries/CrashAndBurn/. Затем в скетче добавьте директиву include #include <CrashAndBurn.h>.
Альтернативный вариант — поместить файлы .h и .cpp в другое место, например, в папку внутри папки проекта, и изменить директиву include так, чтобы она указывала на них, например, #include "libs/CrashAndBurn.h", где папка libs находится внутри папки Sketch. Или можно поместить их в любую папку и указать абсолютный путь к ним: /home/some/place/else/CrashAndBurn.h
Иногда вам нужно немного изменить правила работы с файлами библиотеки в случае с этой библиотекой, чтобы сделать ее доступной. Я переместил код из папки ./src за пределы корневой папки проекта.
Ещё одна проблема заключается в том, что вы можете использовать устаревшую версию IDE. Особенно это может произойти в GNU/Linux, если вы устанавливаете IDE для Arduino из репозиториев дистрибутива.
просто переименуйте папку из zip в LoRa в библиотеках. не нужно перемещать файлы, @Juraj
Я использовал метод git., @Dimitrios Desyllas
Я создаю ссылку на файловую систему из папки git в папку libraries с правильным именем библиотеки, @Juraj
- Wire.h не найден!
- Digispark / DigiKeyboard изменить раскладку клавиатуры
- Может ли плагин Arduino Eclipse использовать библиотеки, установленные Arduino IDE?
- ATtiny85 и DHT11 - Датчик всегда возвращает 0
- Как передать строковые данные с помощью библиотеки rc-switch?
- Arduino IDE: Плата nodemcuv2 (платформа esp8266, пакет esp8266) неизвестна
- Как установить собственную библиотеку с помощью Arduino IDE 1.8.5?
- Альтернативы дисплею Nextion
Arduino IDE справится с этим, если библиотеки действительно установлены через IDE., @Ignacio Vazquez-Abrams