Não é fácil. Os arquivos ld.so.conf
têm um formato muito simples: são apenas uma lista de caminhos.
Você poderia fazer algo construindo seu executável com um interpretador diferente ; o normal seria algo como /lib64/ld-linux-x86-64.so.2
1 e é o que realmente é responsável por realizar a vinculação dinâmica. Portanto, o vinculador dinâmico personalizado pode procurar em ld.so.conf
diferente ou fazer qualquer coisa. Mas isso soa muito pior do que o rpath!
Uma solução muito mais simples é um wrapper. Instale o binário como program.real
ou, melhor ainda, em /usr/local/lib/
em algum lugar (isto é, não em $PATH
). Em seguida, coloque um script de shell simples como /usr/local/bin/program
:
#!/bin/sh
export LD_LIBRARY_PATH=/path/to/libs
exec /usr/local/lib/program/program.real
Agora, a localização da sua biblioteca é independente da compilação, mas o programa de chamada não precisa de conhecimento dela.
1 : maneira rápida de encontrar o que normalmente está no seu sistema: readelf /bin/bash -p .interp
. Tente alguns executáveis diferentes; você encontrará pelo menos programas de 32 e 64 bits usando um diferente.