LINUX.ORG.RU

ардуина не видит библиотеки

 


0

1

нашел готовый проект тестера ESR литиевых батареек на дуйне, решил собрать.

с железом вопросов не было (ну не считая факта, что автор 0 канал АЦП почему-то повешал на землю), а вот сама дуйня при попытке скомпилить код не видит библиотеки:

/usr/share/arduino/arduino-builder -compile -logger=machine -hardware /usr/share/arduino/hardware -hardware /home/user/.arduino15/packages -tools /home/user/.arduino15/packages -libraries /home/user/Arduino/libraries -fqbn=arduino:avr:uno -ide-version=10819 -build-path /tmp/arduino_build_467456 -warnings=default -build-cache /tmp/arduino_cache_886040 -prefs=build.warn_data_percentage=75 -verbose /home/user/Arduino/Impedance_Meter_Sketch/Impedance_Meter_Sketch.ino
U
===info ||| Progress {0} ||| [0.22]
===info ||| Progress {0} ||| [0.45]
===info ||| Progress {0} ||| [0.67]
===info ||| Progress {0} ||| [0.89]
===info ||| Progress {0} ||| [1.12]
===info ||| Using board '{0}' from platform in folder: {1} ||| [uno %2Fusr%2Fshare%2Farduino%2Fhardware%2Farduino%2Favr]
===info ||| Using core '{0}' from platform in folder: {1} ||| [arduino %2Fusr%2Fshare%2Farduino%2Fhardware%2Farduino%2Favr]
===info ||| Progress {0} ||| [1.34]
===info ||| Progress {0} ||| [1.56]
===info ||| Progress {0} ||| [1.79]
===info ||| Progress {0} ||| [2.01]
===info ||| Progress {0} ||| [2.23]
===info ||| Progress {0} ||| [2.46]
===info ||| Progress {0} ||| [2.68]
===info ||| Progress {0} ||| [2.90]
===info ||| Progress {0} ||| [3.13]
===info ||| Progress {0} ||| [3.12]
===info ||| Progress {0} ||| [6.25]
===info ||| Progress {0} ||| [9.38]
===info ||| Progress {0} ||| [12.50]
===info ||| Progress {0} ||| [15.62]
===info ||| Detecting libraries used... ||| []
===info ||| Progress {0} ||| [18.75]
/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_467456/sketch/Impedance_Meter_Sketch.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE
===debug ||| Error while detecting libraries included by {0} ||| [%2Ftmp%2Farduino_build_467456%2Fsketch%2FImpedance_Meter_Sketch.ino.cpp]
===info ||| Progress {0} ||| [21.88]
===info ||| Progress {0} ||| [25.00]
===info ||| Generating function prototypes... ||| []
===info ||| Progress {0} ||| [28.12]
/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_467456/sketch/Impedance_Meter_Sketch.ino.cpp -o /tmp/arduino_build_467456/preproc/ctags_target_for_gcc_minus_e.cpp -DARDUINO_LIB_DISCOVERY_PHASE
/home/user/Arduino/Impedance_Meter_Sketch/Impedance_Meter_Sketch.ino:4:10: фатальная ошибка: U8glib.h: Нет такого файла или каталога
    4 | #include <U8glib.h>
      |          ^~~~~~~~~~
компиляция прервана.
===info ||| Progress {0} ||| [25.00]
===info ||| Progress {0} ||| [50.00]
===info ||| Progress {0} ||| [75.00]
===info ||| Progress {0} ||| [100.00]
exit status 1

при этом

$ ls /home/user/Arduino/libraries/
Adafruit_ADS1X15  Adafruit_BusIO  readme.txt  U8g2  U8glib

т.е. либы есть и распакованы.

ругается хоть на U8glib, хоть на следующий инклайд Adafruit_ADS1015.h если U8glib закомментить.

вопрос: что не нравится этой поделке, и как ее вообще заставить работать?

★★★★★
Ответ на: комментарий от apt_install_lrzsz

arduino-builder получает параметр -libraries /home/user/Arduino/libraries

но почему-то gcc, который дуйня вызывает, не получает -I параметры из /home/user/Arduino/libraries/<пакет>/<путь>

собссно главный вопрос - почему.

гугление показало, что проблема встречается в дуйне выше 1.8.5, и как ее решить - никто не знает, кроме как откатиться на 1.8.5.

я конечно ожидал, что дуйня корявая и кривая, но чтоб настолько…

NiTr0 ★★★★★
() автор топика
1 января 2024 г.

поборол такое - проблема была в том что arduino-builder не может полноценно работать если gcc использует локализацию (сообщения об ошибках например на русском), если запускать ide или arduino-builder с переменной среды LC_ALL=C то все нормально даже на gcc 12

в результате просто поправил arduino-builder/main.go:

func main() {
        var hardwareFoldersFlag foldersFlag
        var toolsFoldersFlag foldersFlag
        var librariesBuiltInFoldersFlag foldersFlag
        var librariesFoldersFlag foldersFlag
        var customBuildPropertiesFlag propertiesFlag

+       os.Setenv("LC_ALL", "C")

        preprocessFlag := flag.Bool("preprocess", false, "preprocess the given sketch")
        dumpPrefsFlag := flag.Bool("dump-prefs", false, "dumps build properties used when compiling")
...
ed ★★
()
Последнее исправление: ed (всего исправлений: 5)