Eu tenho um executável vinculado assim:
$ ldd a.out
libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x00007f4881f56000)
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f4881cfb000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f4881965000)
librt.so.1 => /lib64/librt.so.1 (0x00007f488175d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4881540000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4881239000)
.
.
Onde as bibliotecas libcrypto e libssl estão openssl 1.0.0-fips libs. Em vez disso, quero experimentar as bibliotecas 1.0.1 e construí-as no meu diretório pessoal. Existe uma maneira de a.out
vincular minhas novas bibliotecas openssl sem muita dor? Eu gostaria de evitar
- Ter que revincular
a.out
(porque as ferramentas de construção são extremamente complicadas) - Alterando todas as configurações globais (porque outros desenvolvedores trabalham nesta máquina)
É possível fazer o que espero aqui?
Escreva um script de wrapper que defina a
LD_LIBRARY_PATH
variável de ambiente. Esse é o pendentePATH
para bibliotecas compartilhadas. O caminho de pesquisa do sistema é sempre pesquisado após os diretórios listados em$LD_LIBRARY_PATH
. Consulte o manual do vinculador dinâmico para referência.Ou, por exemplo, diretamente na linha de comando:
Como alternativa, se você deseja modificar o binário, tente chrpath , que permite editar o caminho de pesquisa da biblioteca inserido no executável.
fonte
chrpath
. Exatamente o que eu precisava.