Двоичный файл требует более старой версии общего объекта

Мне дали двоичный файл для выполнения, но выполнение ldd ./name_of_binary дает

libABC.so.1 => not found

(я заменил имя библиотеки на «libABC», потому что мне нужен общий ответ)

У меня есть libABC.so.2. Как я могу получить libABC.so.1? Или ответ будет конкретным для каждой библиотеки?

1
задан 22 April 2014 в 10:39

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
0
ответ дан 22 April 2014 в 10:39

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

Похожие вопросы: