¿Es normal que falta una variable LD_LIBRARY_PATH en un entorno?

15

Por coincidencia, he encontrado que en mi Debian Jessie no hay ninguna LD_LIBRARY_PATHvariable (para ser exactos printenv | grep LD, no muestra nada relacionado con el enlazador y echo "$LD_LIBRARY_PATH"tampoco muestra nada).

Este es el caso en el emulador de terminal x ( que podría borrarlo debido a setgid ), así como en el terminal básico ( Ctrl+Alt+F1).

Sé que LD_LIBRARY_PATH puede considerarse malo, por lo que Debian puede bloquearlo de alguna manera, pero, por otro lado, hay algunos archivos /etc/ld.so.conf.d/que contienen algunos directorios para agregar LD_LIBRARY_PATH. Ninguno de mis archivos rc (que yo sepa) se mete LD_LIBRARY_PATHtampoco.

¿Por qué no veo una LD_LIBRARY_PATHvariable?

calavera.info
fuente

Respuestas:

22

Sí, es normal que no tenga ningún explícito LD_LIBRARY_PATH. Lea también ldconfig (8) y ld-linux (8) y sobre el rpath . Tenga en cuenta que las ldconfigactualizaciones /etc/ld.so.cache, no el LD_LIBRARY_PATH. A veces configurará la ruta de un ejecutable explícitamente con el -Wl,-rpath,directorio pasado agcc en el momento del enlace.

Si necesita un LD_LIBRARY_PATH(pero probablemente no debería hacerlo), configúrelo usted mismo (por ejemplo, en ~/.bashrc).

Si necesita configuración global del sistema, por ejemplo, usted podría considerar la adición /usr/local/lib/de /etc/ld.so.confy ejecutar ldconfigdespués de la instalación de todas las bibliotecas allí.

AFAIK $LD_LIBRARY_PATHsolo lo usa el enlazador dinámico ld-linux.so(y dlopen (3) que lo usa) después de execve (2) . Ver también ldd (1) .

Lea cómo escribir bibliotecas compartidas de Drepper para obtener más información.

Basile Starynkevitch
fuente
Ese fue mi error, pensé que LD_LIBRARY_PATH es el producto de la ejecución ldconfig. Mientras tanto, es la entrada de ldconfig junto con los archivos en /etc/ld.so.conf.
calavera.info
1
Mi sensación es que ldconfigno se usa $LD_LIBRARY_PATH(que solo se usa a ld-linux.sotiempo)
Basile Starynkevitch
3
@ calavera.info no es ninguno. El enlazador dinámico se usa LD_LIBRARY_PATH junto con la salida de ldconfigen tiempo de ejecución. ldconfigni usos ni cambios LD_LIBRARY_PATH.
hobbs
Ahora puedo ver que lo tuve totalmente en mal estado, probablemente al pasar demasiado tiempo en Java, donde "classpath" es, virtualmente, la única configuración de enlace dinámico. Todo parece estar claro ahora, muchas gracias.
calavera.info