Como forçar o executável a vincular a biblioteca dinâmica

1

Eu tenho este executável compilado:

./run.x

Eu o movi para outro computador, mas as dependências dinâmicas não estão satisfeitas:

ldd ./run.x
        libx.1.so => not found

No entanto, no segundo computador, existe uma versão mais recente da mesma biblioteca (mas o kernel do Linux é o mesmo junto com outros recursos). Minha pergunta é: é possível forçá-lo a vincular outro objeto compartilhado:

ldd ./run.x
        libx.1.so => libx.2.so

Sem criar o link simbólico libx.1.so => libx2.so e sem recompilar o aplicativo inteiro (tenho boas razões para não fazê-lo).

    
por Addman 17.11.2017 / 18:32

1 resposta

4

Você poderia corrigir o nome do link no binário, mas isso seria uma má ideia. Se a biblioteca mudou sua versão (tecnicamente, seu soname), isso significa que ela mudou de uma maneira incompatível com versões anteriores, portanto não há garantias de que seu executável funcionaria com a nova biblioteca.

Para corrigir isso, você precisa copiar a biblioteca antiga ou recompilar o executável.

    
por 17.11.2017 / 18:37