Você pode alterar um destino de link dinâmico sem recompilar?

7

Eu baixei um programa que infelizmente não vem como uma distribuição de código-fonte. Quando eu vou executá-lo, recebo o erro

error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or directory

O programa parece ter sido ligado a uma versão específica do libjpeg que minha distro não possui. Criar um link simbólico chamado /usr/lib32/libjpeg.so.62 para o meu% reallibjpeg.so corrige o problema, mas procurar em /usr/lib32 apenas para fazer com que um programa funcione parece estúpido e exagerado.

Existe alguma maneira (sem recompilação) de fazer o programa vincular dinamicamente libjpeg.so em vez de libjpeg.so.62 ?

FWIW, file info para o programa é

ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
    
por Matt Kline 27.08.2013 / 18:34

1 resposta

5

Edite binário o arquivo (com vim -b , por exemplo) e substitua qualquer ocorrência de /usr/lib32/libjpeg.so.62 por algum caminho para seu libjpeg.so que tenha exatamente o mesmo tamanho, como por exemplo /usr/lib//////libjpeg.so

/usr/lib32/libjpeg.so.62
/usr/lib//////libjpeg.so
    
por 27.08.2013 / 18:46