Команда ldd
пытается связать исполняемый файл или библиотеку с общими библиотеками в вашей системе точно так же, как это происходит при запуске/использовании. Он прочитает ссылки на библиотеки из данного файла и попытается найти их в вашей файловой системе и пути(LD_LIBRARY_PATH
). Если он отображает «???
», то это означает, что он не может найти некоторые библиотеки в вашей системе (и программа/библиотека, которую вы проверили, скорее всего, не запустится / не будет использоваться ).
Часто возникают проблемы с библиотеками при копировании файла (исполняемого файла или библиотеки общих объектов )из одной системы в другую. Причина в разных системных библиотеках -, даже если они отличаются только версией и существуют иным образом.
Иногда решение состоит в том, чтобы также скопировать отсутствующие библиотеки и поместить их в папку, включенную в LD_LIBRARY_PATH
. Вы также можете установить эту переменную для этой цели или добавить новую папку, потому что вы не хотите устанавливать эти скопированные файлы библиотеки в свою систему (! ).
Вы можете узнать, какие библиотеки копировать, запустив ldd
в исходной системе.
Если это ваша собственная программа или вы скомпилировали ее самостоятельно, вы можете знать, каких библиотек не хватает.
После того, как вы идентифицировали свои библиотеки, вы можете скопировать их в личную папку, например. в ~/libs
. Затем добавьте эту папку в путь к библиотеке :
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":~/libs
если переменная уже существует (проверка по echo $LD_LIBRARY_PATH
),или
export LD_LIBRARY_PATH=~/libs
если нет (обаbash
-синтаксиса оболочки в стиле ).
Затем повторите попытку ldd
.
Позже вы сможете запускать свою настоящую программу, всегда используя сценарий оболочки, который устанавливает переменную, а затем запускает вашу программу.