O / lib e / usr / lib são adicionados automaticamente. Outras bibliotecas são adicionadas do arquivo /etc/ld.so.conf.
Eu tenho um programa foobar
que usa bibliotecas compartilhadas. Eu configurei LD_LIBRARY_PATH
corretamente e então quando eu corro
>ldd foobar
Eu posso ver que ele conhece caminhos completos para todas as bibliotecas de que precisa.
No entanto, em alguns sistemas ("maiores"), eu não preciso de LD_LIBRARY_PATH
para ldd
para saber onde as bibliotecas estão, e em algumas ("menores") que eu faço.
Em ambos os sistemas, o executável foobar
é o mesmo, o caminho para ele é o mesmo e todas as bibliotecas e caminhos para eles são iguais.
Isso significa que o rpath
embutido no executável é o mesmo em ambos os casos.
Portanto, deve haver alguma outra maneira de determinar onde estão as bibliotecas? O que é isso?
O / lib e / usr / lib são adicionados automaticamente. Outras bibliotecas são adicionadas do arquivo /etc/ld.so.conf.
ldconfig
é um utilitário que mantém um cache de bibliotecas compartilhadas. Quando configurado corretamente, os caminhos corretos da biblioteca serão colocados em cache e disponíveis para os executivos. Você pode usar ldconfig -p
para imprimir os candidatos à biblioteca atualmente disponíveis.
Veja a página de manual para ldconfig(8)
.
Tags linux shared-libraries