Posso usar meu próprio ld.so.cache?

13

ldconfig tem duas opções interessantes:

-f conf
      Use conf instead of /etc/ld.so.conf.
-C cache
      Use cache instead of /etc/ld.so.cache.

Tentei copiar /etc/ld.so.confpara o meu próprio diretório pessoal e editei-o para incluir caminhos para minhas bibliotecas locais, por exemplo, /home/syockit/local/usr/libetc.

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache

e, posteriormente, para confirmar que as bibliotecas estão armazenadas em cache, executei

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache -p | less

e inclui todas as minhas bibliotecas, além das bibliotecas do sistema.

Agora, quero que o vinculador padrão use esses dois. Mas man ld.so, não vejo menção de poder usar o costume .confou .cache. Então, qual é o objetivo das duas opções acima ldconfig?

syockit
fonte

Respostas:

8

Acho que a resposta para sua pergunta é não, embora você possa realizar a mesma coisa de outras maneiras.

no man ld.so, não vejo menção de poder usar .conf ou .cache personalizados

É verdade, mas há menções de $LD_LIBRARY_PATHe e --library-path, sendo o primeiro mais útil em geral.

qual é o objetivo das duas opções acima ldconfig?

Portanto, você pode criar um cache sem substituir o sistema e sem precisar usar o sistema confs.

Cachinhos Dourados
fonte
... apenas para os pedaços dele? Ou é para forense do sistema?
syockit
1
Pode ser para uma imagem do sistema ou ambiente chroot, etc.
goldilocks
5

/etc/ld.so.confé lido apenas por ldconfig(o programa de geração de cache), não por ld.so(o carregador dinâmico). Você pode alterar o local do arquivo de configuração se desejar gerar um cache diferente do padrão do sistema.

/etc/ld.so.cacheé lido por ld.soe você não pode fazê-lo ler de um local diferente. No entanto, pode ser útil passar um local de saída diferente para ldconfig. O caso de uso mais comum é provavelmente ambientes chroot . Você pode usar ldconfig -r /some/rootpara executarldconfig em uma raiz alternativa e colocar a saída onde quiser (dentro ou fora dessa raiz). Você precisará emitir a saída /some/root/etc/ld.so.cacheou copiá-la posteriormente. Existem outros casos de uso bastante obscuros, por exemplo, se você deseja executar ldconfigcomo um usuário não privilegiado (para quem não pode gravar /etc/ld.so.cache) e depois mover o arquivo para o local mais tarde.

Gilles 'SO- parar de ser mau'
fonte