arm-none-eabi-gdb: ошибка при загрузке разделяемых библиотек: libncurses.so.5: невозможно открыть общий объектный файл: нет такого файла или каталога

Ubuntu 20.04.1 LTS 64-разрядная версия 3.36.3 Gnome Intel core-i7-975H 31,2 ГБ памяти 1,6 ТБ дискового пространства У меня была вакцина от гриппа COVID-19: Нег, но я скучный и все равно никуда не хожу...

Я пробовал несколько исправлений, включая это:

Сообщение Невозможно запустить arm- none-eabi-gdb: не удается найти libncurses.so.5

Но нет любви. Я все еще продолжаю получать ту же ошибку. Я пытаюсь прошить программное устройство, используя Arduino IDE v1.8.13. Версия GDB здесь:

arm-none-eabi-gdb --version

версии libncurses здесь:

dpkg -l 'ncurses' | grep '^ii'

Я не знаю, что еще попробовать или проверить. Может у кого есть мысли, что еще проверить?

@MarkPlotnick - я запустил ls -ld $(dpkg -S libncurses.so.5), результат:

ls -ld $(dpkg -S libncurses.so.5)

Затем я специально проверил, был ли установлен libncurses5: i386, пытаясь установить его, и он показывает, что:

libncurses5:i386 is already the newest version (6.2-0ubuntu2).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Я попробовал еще раз немного по-другому:

sudo apt-get -y install libc6:i386 libstdc++6:i386 libncurses5:i386 libudev1:i386

Тогда единственным пакетом для установки был libudev1:i386. Но если я попытаюсь найти файл:

~$ locate libncurses5:i386

Затем я получаю пять файлов в этом месте:

/var/lib/dpkg/info/libncurses5:i386.list
/var/lib/dpkg/info/libncurses5:i386.md5sums
/var/lib/dpkg/info/libncurses5:i386.shlibs
/var/lib/dpkg/info/libncurses5:i386.symbols
/var/lib/dpkg/info/libncurses5:i386.triggers

Это как файл Шёдингера...


person Carbon    schedule 24.09.2020    source источник
comment
Пожалуйста, замените ссылку на изображения текстовым выводом, отформатированным в коде в вашем вопросе - используйте для этого пункт меню «двойная фигурная скобка».   -  person Frant    schedule 24.09.2020
comment
Можете ли вы запустить ls -ld $(dpkg -S libncurses.so.5), чтобы проверить, существует ли файл?   -  person Mark Plotnick    schedule 24.09.2020
comment
@Frant - Спасибо за ProTip, но правила таковы: вам нужно не менее 10 репутации, чтобы публиковать изображения. Поэтому единственный способ опубликовать изображения — это связать их, как я это сделал. Извините, это небольшая лига Буша, но это лучшее, что я мог сделать.   -  person Carbon    schedule 26.09.2020
comment
@MarkPlotnick - я ответил вам в своем посте. Я думаю, ты что-то задумал. Вроде эти файлы есть и их там нет... :/   -  person Carbon    schedule 26.09.2020
comment
@Carbon: я хотел сказать: не предоставляйте изображения, когда вы можете предоставить текст.   -  person Frant    schedule 28.09.2020


Ответы (1)


Прежде всего, поскольку вы используете 64-разрядную версию Ubuntu, вам следует убедиться, что вы установили 64-разрядную версию Linux для Arduino IDE v1.18.13. Если это не так, это может объяснить, почему установка пакетов i386 не решила вашу проблему. Если вы этого не сделали, я настоятельно рекомендую удалить 32-разрядную версию Linux и вместо этого установить 64-разрядную версию Linux.

Эту проверку можно выполнить, выполнив следующую команду:

file ~/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-gdb

Вы должны увидеть что-то вроде:

/home/user/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-gdb: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.8, stripped

Важная информация здесь будет ELF 64-bit LSB executable.

64-битная версия libncurses.so.5, конечно же, отсутствует:

ldd ~/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-gdb
        linux-vdso.so.1 (0x00007ffccf1ed000)
        libncurses.so.5 => not found
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f68fa317000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f68fa125000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f68fa11f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f68fa482000)

Его можно установить с помощью следующей команды:

sudo apt-get install libncurses5

После запуска sudo ldconfig:

ldd  ~/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-gdb
        linux-vdso.so.1 (0x00007ffcc41f5000)
        libncurses.so.5 => /lib/x86_64-linux-gnu/libncurses.so.5 (0x00007f890c00d000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f890bebe000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f890bccc000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f890bcc6000)
        libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f890bc98000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f890c04f000)

Теперь ваш GDB должен работать:

~/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-gdb -tui

Предоставленная Arduino arm-none-eabi-gdb

Обратите внимание, что такие же проблемы могут возникнуть с GNU Arm Embedded Toolchain, а также в Ubuntu 20.04.1. Это можно исправить, установив недостающие пакеты:

sudo apt-get install libtinfo5 libncursesw5 libpython2.7

person Frant    schedule 24.09.2020
comment
Он установил libncursew5 и libpython2.7, затем обновил apt, но пока без исправления. - person Carbon; 26.09.2020
comment
1) Вы выполнили точную команду выше? libtinfo5 был необходим в моей новой системе. 2) Вы получаете сообщение об ошибке? Если да, то какой? - person Frant; 28.09.2020
comment
Привет @Carbon, если этот или любой другой ответ решил ваш вопрос, рассмотрите возможность его принятия, нажав на галочку. Это показывает более широкому сообществу, что вы нашли решение, и повышает репутацию как отвечающего, так и вас самих. Нет никаких обязательств делать это. - person Frant; 05.10.2020
comment
Привет, @Франц. Спасибо, но это не решило проблему. В настоящее время я переустанавливаю Ubuntu 20.04 и начинаю с нуля с помощью Arduino IDE ... Я отправлю сообщение. Наверное, в выходные. Должно быть, я сломал символическую ссылку или что-то еще. - person Carbon; 07.10.2020