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 здесь:
Версии 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