libraries – Cambiar la biblioteca vinculada para un ejecutable determinado (CentOs 6)

Pregunta:

Tengo un ejecutable vinculado como este:

  $ 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 bibliotecas openssl 1.0.0-fips. En su lugar, quiero experimentar con las bibliotecas 1.0.1, por lo que las he creado en mi directorio de inicio. ¿Hay alguna manera de hacer que a.out vuelva a vincular mis nuevas bibliotecas openssl sin mucho dolor? Me gustaria evitar

  • Tener que volver a vincular a.out (porque las herramientas de construcción son enormemente complicadas)
  • Alterar cualquier configuración global (porque otros desarrolladores trabajan en esta máquina)

¿Es posible hacer lo que espero aquí?

Respuesta:

Puede sustituir temporalmente una biblioteca diferente para esta ejecución en particular. En Linux, la variable de entorno LD_LIBRARY_PATH es un conjunto de directorios separados por dos puntos donde las bibliotecas deben buscarse primero, antes del conjunto estándar de directorios; esto es útil cuando se depura una biblioteca nueva o se usa una biblioteca no estándar para propósitos especiales. La variable de entorno LD_PRELOAD enumera las bibliotecas compartidas con funciones que anulan el conjunto estándar, tal como lo hace /etc/ld.so.preload. – Bibliotecas compartidas

También puede invocar el cargador directamente:

/lib/ld-linux.so.2 –library-path path executable

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım