O binário requer uma versão mais antiga de um objeto compartilhado

1

Recebi um binário para executar, mas executando ldd ./name_of_binary

libABC.so.1 => not found

(substituí o nome da biblioteca por 'libABC' porque gostaria de uma resposta geral)

Eu tenho libABC.so.2 . Como posso obter libABC.so.1 ? Ou a resposta seria específica para cada biblioteca?

    
por Garrett 22.04.2014 / 08:39

1 resposta

1

Em uma pitada, você poderia tentar apenas criar um symlink.

ln -s -T /lib/libABC.so.2 ~/libs/libABC.so.1
export LD_LIBRARY_PATH=~/libs/:$LD_LIBRARY_PATH

Isso é ruim porque a API provavelmente será diferente, mas pode funcionar temporariamente (mas eventualmente irá falhar ou dar um comportamento imprevisível, também pode ser um problema de segurança).

A melhor opção seria encontrar uma cópia do libABC.so.1 (tente link ). Você pode baixar o pacote antigo, instalá-lo em um diretório não padrão (como / opt / ou ~ / libs /):

dpkg -i --instdir=/opt/ ABC-1.deb

adicione esse caminho ao seu LD_LIBRARY_PATH:

export LD_LIBRARY_PATH="/opt/lib/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH"

É possível que apenas instalar em root funcione (nesse caso, você pode fazer isso), mas provavelmente haverá um conflito com a versão mais recente. E pode causar problemas.

sudo dpkg -i ABC-1.deb
    
por Micah 22.04.2014 / 20:15