como um programa sabe onde estão as bibliotecas compartilhadas, sem LD_LIBRARY_PATH

2

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?

    
por user322908 26.05.2014 / 04:56

2 respostas

0

O / lib e / usr / lib são adicionados automaticamente. Outras bibliotecas são adicionadas do arquivo /etc/ld.so.conf.

    
por 27.05.2014 / 12:35
0

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) .

    
por 27.05.2014 / 14:44