Suponha que /usr/lib/x86_64-linux-gnu/
contenha libfoo:
libfoo.so.2
->libfoo.so.2.0.0
(link simbólico)libfoo.so.2.0.0
Notavelmente falta é libfoo.so
.
Suponha que haja um programa /usr/local/bin/sillyprog
que compila coisas usando algo como gcc somefile.c -lfoo
. Toda vez que tento usar sillyprog
, ele falha /usr/bin/ld: cannot find -lfoo
porque libfoo.so
está faltando.
Supondo que eu não tenha permissão para editar nenhum arquivo /usr
, quais soluções alternativas posso usar para vincular com êxito o libfoo durante a execução sillyprog
?
Uma opção seria criar um link com o nome correto para a biblioteca em um diretório que você controla. Em seguida, você pode usar as variáveis de ambiente
LIBRARY_PATH
eLD_LIBRARY_PATH
para apontar para esse diretório. Essas variáveis influenciam onde o vinculador e o carregador procuram bibliotecas ao compilar ou executar um programa, respectivamente. De acordo com a documentação do GCC :Então, algo como:
E então, para executar um programa que usa
libfoo.so
para compilação:Ou para executar um programa que está vinculado a
libfoo.so
: