Ошибка сегментации в Serial.begin()

Я пытаюсь связаться со своим клоном Arduino (Elegoo Uno R3) из Arduino IDE (v1.8.4, установленной dnf из репозиториев) в Fedora 27. Компиляция и загрузка обычного примера кода работает хорошо. Однако, когда я пытаюсь начать любую последовательную связь (например, для отладки), компилятор терпит неудачу, возвращая следующую ошибку сегментации:

"/usr/bin/avr-gcc"  -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p  -o "/tmp/arduino_build_407070/AnalogReadSerial.ino.elf" "/tmp/arduino_build_407070/sketch/AnalogReadSerial.ino.cpp.o" "/tmp/arduino_build_407070/../arduino_cache_983152/core/core_arduino_avr_uno_1621df717313d057c92202babd71649a.a" "-L/tmp/arduino_build_407070" -lm
lto1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://bugzilla.redhat.com/> for instructions.
lto-wrapper: fatal error: /usr/bin/avr-gcc returned 1 exit status
compilation terminated.
/usr/lib/gcc/avr/6.3.0/../../../../avr/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino/Genuino Uno.

Я нашел похожую проблему здесь https://github.com/sudar/Arduino-Makefile/issues/486 Однако это решение связано с программным обеспечением Arduino-Makefile, которое для меня немного сложновато.

Я был бы признателен за любую помощь в решении самой ошибки сегментации или в том, как легко использовать Arduino-Makefile (я хотел бы скомпилировать из Arduino IDE или любой удобной для пользователя IDE).

, 👍1

Обсуждение

Какая у вас версия IDE? И как вы её устанавливали?, @Majenko

Как avr-gcc попал в /usr/bin? Как именно вы установили Arduino? Вы намеренно используете avr-gcc, отличный от того, что идёт в комплекте, или это случайный случай, когда версия системы переопределяет версию Arduino?, @Chris Stratton

Отредактировал вопрос - версия 1.8.4, установлена из репозиториев. Никаких настроек с avr-gcc не делал, ничего не менял., @Petr Lousa

@ChrisStratton which arduino предоставил /usr/bin/arduino, затем find /usr/bin/arduino -name avr-gcc ничего не вывел. ls -l /usr/bin/avr-gcc выдает -rwxr-xr-x. 2 root root 830016 2 авг. 20:40 /usr/bin/avr-gcc и /usr/bin/avr-gcc --version выдают avr-gcc (Fedora 6.3.0-3.fc27) 6.3.0`, @Petr Lousa

@ChrisStratton Я установил с помощью sudo dnf install arduino. Мигание работает как надо. Я также проверил переключатель, и он тоже работает. Можно ли скачать исполняемый файл и запустить его вместе с версией RedHat?, @Petr Lousa

Не устанавливайте из репозиториев. Загрузите официальный tar-архив Arduino., @Majenko

Если вы установите файл по уникальному пути, то, вероятно, это поможет, но безопаснее удалить версию RedHat с помощью их менеджера пакетов. Похоже, это та же ошибка, о которой говорит проект Arduino-Makefile, и она применима как минимум к пакету avr-gcc типа Fedora в широком диапазоне версий. Возможно, вы сможете исправить это, добавив в IDE флаг сборки, о котором они говорят, но проще использовать рабочую версию Arduino, если только вы не хотите этого избегать., @Chris Stratton

Спасибо за помощь! Официальные исполняемые файлы Arduino помогли :) Не могли бы вы преобразовать комментарий в ответ, чтобы я мог поставить лайк и принять его? Большое спасибо., @Petr Lousa


1 ответ


1

В настоящее время в репозитории updates-testing доступна новая версия пакета avr-gcc, которая должна исправить проблему. Вы можете установить/обновить ее, включив репозиторий updates-testing или взяв rpm из koji (https://koji.fedoraproject.org/koji/buildinfo?buildID=1013122)

,