Мне дали двоичный файл для выполнения, но выполнение ldd ./name_of_binary
дает
libABC.so.1 => not found
(я заменил имя библиотеки на «libABC», потому что мне нужен общий ответ)
У меня есть libABC.so.2
. Как я могу получить libABC.so.1
? Или ответ будет конкретным для каждой библиотеки?
В повышении Вы могли попытаться просто создать символьную ссылку.
ln -s -T /lib/libABC.so.2 ~/libs/libABC.so.1
export LD_LIBRARY_PATH=~/libs/:$LD_LIBRARY_PATH
Это плохо, потому что API будет, вероятно, отличаться, но он может работать временно (но он в конечном счете разрушит или даст непредсказуемое поведение, это могла бы также быть проблема безопасности).
более оптимальный вариант состоял бы в том, чтобы найти копию libABC.so.1 (попытка http://packages.ubuntu.com/ ). Вы могли загрузить старый пакет, установить его в нестандартный каталог (как/opt/, или ~ / освобождает/):
dpkg -i --instdir=/opt/ ABC-1.deb
тогда добавляют что путь к Вашему LD_LIBRARY_PATH:
export LD_LIBRARY_PATH="/opt/lib/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH"
Ее возможное, что просто установка в корень будет работать (в этом случае можно сделать это), но вероятно, будет конфликт с более новой версией. И может вызвать проблемы.
sudo dpkg -i ABC-1.deb