У меня есть программа, которая прекрасно скомпилирована на Ubuntu ARM (12.04), но она не может работать из-за ошибок при компоновке. например libX11.so.6 не может быть найден, однако ясно, что в
/usr/lib/arm-linux-gnueabihf
ldconfig -v shows it as well
странно, когда я передаю LD_LIBRARY_PATH = / usr / lib / arm-gnueabihf / ldd (после разделяемой библиотеки), я получите сообщение
ldd: LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/: No such file or directory
Пока каталог явно существует. Что может быть не так? Я запускал sudo ldconfig.
Возможно, вы смешали ABI . В настоящее время существует несколько ABI для процессоров ARM, широко используемых из-за разнообразия процессоров ARM. Убедитесь, что у вас есть двоичный файл gnueabihf , а не двоичный файл gnueabi. Вы можете установить оба вида двоичных файлов в одной системе, но вы не можете связать оба вида библиотек в одном исполняемом файле. Это как 32-битные и 64-битные исполняемые файлы в системах x86.
С помощью LD_LIBRARY_PATH
правильная команда для добавления переменной в среду на время выполнения команды ldd
:
LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/ ldd /path/to/binary
Вы написали ldd LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/ /path/to/binary
, что говорит ldd
действовать на файл с именем LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/
.