GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo se especifica la ubicación de las bibliotecas en un binario? (Linux)

Para una sola vez, establezca la variable LD_LIBRARY_PATH a una lista de directorios separados por dos puntos para buscar. Esto es análogo a PATH para ejecutables, excepto que los directorios del sistema estándar se buscan adicionalmente después de los especificados a través del entorno.

LD_LIBRARY_PATH=/usr/local/lib64 ./cart5

Si tiene un programa que mantiene las bibliotecas en una ubicación no estándar y no puede encontrarlas por sí mismo, puede escribir un script contenedor:

#!/bin/sh
if [ -n "$LD_LIBRARY_PATH" ]; then
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
else
  LD_LIBRARY_PATH=/usr/local/lib64
fi
export LD_LIBRARY_PATH
exec /path/to/cart5 "[email protected]"

La lista de directorios del sistema estándar se mantiene en /etc/ld.so.conf . Los sistemas recientes permiten que este archivo incluya otros archivos; si el tuyo contiene algo como include /etc/ld.so.conf.d/*.conf , crea un nuevo archivo llamado /etc/ld.so.conf.d/mala.conf que contiene los directorios que desea agregar. Después de cambiar /etc/ld.so.conf o un archivo incluido, ejecute /sbin/ldconfig para que sus cambios surtan efecto (esto actualiza un caché).

(LD_LIBRARY_PATH también se aplica a muchos otros unices, incluidos FreeBSD, NetBSD, OpenBSD, Solaris y Tru64. HP-UX tiene SHLIB_PATH y Mac OS X tiene DYLD_LIBRARY_PATH . /etc/ld.so.conf tiene análogos en la mayoría de los dispositivos, pero la ubicación y la sintaxis difieren más ampliamente).


Si desea evitar LD_LIBRARY_PATH, también puede hacerlo durante la vinculación:

gcc -o exename -L/path/to/dynamiclib/ -lnameofLib \
    -Wl,-R/path/to/dynamiclib/ sourceCode1.c ...

El -Wl,... se utiliza para pasar comandos adicionales al enlazador y, en este caso, con -R le indica al enlazador que almacene esta ruta como la "ruta de búsqueda predeterminada" para el .so.

Guardo notas de muchos pequeños consejos como este, en mi sitio:

https://www.thanassis.space/tricks.html


Linux
  1. Cómo usar el comando grep de Linux

  2. Cómo usar el comando de historial en Linux

  3. Cómo llegó Linux al mainframe

  4. ¿Cómo se puede identificar el chipset de un dispositivo usb en Linux?

  5. ¿Cómo usa expresiones regulares con el comando cp en Linux?

Cómo obtener el tamaño de un directorio en Linux

Cómo verificar la versión del kernel en Linux

Cómo verificar la complejidad de la contraseña en Linux

Cómo enumerar los miembros de un grupo en Linux

Cómo verificar el nivel de ejecución en Linux

Cómo personalizar el comando superior de Linux