Tengo un ejecutable vinculado de esta manera:
$ 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)
.
.
Donde las bibliotecas libcrypto y libssl son openssl 1.0.0-fips libs. En cambio, quiero experimentar con las bibliotecas 1.0.1, por lo que las he creado en mi directorio de inicio. ¿Hay alguna manera de volver a.outa vincular contra mis nuevas bibliotecas OpenSL sin mucho dolor? Me gustaria evitar
- Tener que volver a vincular
a.out(porque las herramientas de compilación son enormemente complicadas) - Alterar cualquier configuración global (porque otros desarrolladores trabajan en esta máquina)
¿Es posible hacer lo que espero aquí?

Escriba un script de contenedor que establezca la
LD_LIBRARY_PATHvariable de entorno. Este es el colgante dePATHlas bibliotecas compartidas. La ruta de búsqueda del sistema siempre se busca después de los directorios listados en$LD_LIBRARY_PATH. Consulte el manual del enlazador dinámico como referencia.O, por una vez, directamente en la línea de comando:
Alternativamente, si desea modificar el binario, intente chrpath , que le permite editar la ruta de búsqueda de la biblioteca en el ejecutable.
fuente
chrpath. Exactamente lo que necesitaba.