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

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

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

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

sudo apt-get install libtinfo5 libncursesw5 libpython2.7

Другие вопросы по тегам