Ошибка компиляции с использованием arduino-mk в Arch Linux (неопределенная ссылка на __dso_handle)
- Я компилирую простой скетч, который считывает значения с аналогового входа. и активирует зуммер на цифровом входе.
- работает на Arduino uno.
- скетч компилируется и отлично работает в Windows и Arch Linux с помощью Arduino. IDE.
Недавно я попытался начать работать с Arduino-mk, я попытался скомпилировать указанный скетч и получил следующую ошибку компилятора (analogVal — это переменная, содержащая AnalogRead):
/usr/bin/avr-gcc -mmcu=atmega328p -Wl,--gc-sections -Os -o /home/niv/Gits/bin/uno/maglove/maglove.elf
~/Gits/bin/uno/maglove/maglove.ino.o ~/Gits/bin/uno/maglove/libcore.a -lc -lm
/home/niv/Gits/bin/uno/maglove/maglove.ino.o: In function `_GLOBAL__sub_I_nothing':
maglove.ino:(.text.startup._GLOBAL__sub_I_nothing+0xc): undefined reference to `__dso_handle'
maglove.ino:(.text.startup._GLOBAL__sub_I_nothing+0xe): undefined reference to `__dso_handle'
maglove.ino:(.text.startup._GLOBAL__sub_I_nothing+0x18): undefined reference to `__cxa_atexit'
/usr/bin/avr-ld: /home/niv/Gits/bin/uno/maglove/maglove.elf: hidden symbol `__dso_handle' isn't defined
/usr/bin/avr-ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
/home/niv/Gits/Arduino-Makefile/Arduino.mk:1416: recipe for target '/home/niv/Gits/bin/uno/maglove/maglove.elf' failed
make: *** [/home/niv/Gits/bin/uno/maglove/maglove.elf] Error 1
make: Target 'all' not remade because of errors.
У меня пока нет большого опыта работы с Arduino, и Google не смог найти эту ошибку или какое-либо ключевое слово из нее в контексте Arduino uno.
спасибо.
@NivPgir, 👍2
Обсуждение1 ответ
Лучший ответ:
Не могу сказать, что полностью понимаю, что происходит, но кажется, что если добавить:
void * __dso_handle;
Возможно, вам удастся устранить одну из проблем. Вы можете попробовать тот же прием с __cxa_atexit
.
Я нашел эту идею, выполнив поиск по:
ардуино __dso_handle
Это веб-страница, Я обнаружил, что это предполагает взлом void *
.
странно... Это сработало! однако это кажется уродливым обходным путем, я бы предпочел понять, что вызывает эту ошибку, и исправить ее на моем компьютере с Linux, поскольку код должен быть хорошим для компиляции и в Windows, и что-то подсказывает мне, что добавление этих объявлений может сломать его при компиляции на окна., @NivPgir
- неопределенная ссылка на `PPMintIn::PPMintIn(int)'
- Ошибка компиляции кода для Arduino/Genuino Uno
- Arduino IDE Отказано В Разрешении На Загрузку, Ubuntu
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Будет ли .ino-скетч ардуино компилироваться непосредственно на GCC-AVR?
- Поддерживают ли чипы ATMega 328/2560 JTAG-программатор и аппаратный отладчик?
- Запуск С для ардуино
- Отключение Arduino при загрузке
Пожалуйста, добавьте строку компиляции. И погуглите "__dso_handle"., @Mikael Patel
@Mikael Микаэль, я добавил строку компиляции. все, что было до этого, — это просто компиляции библиотек, которые идут гладко, @NivPgir