Cómo configurar la variable de entorno LD_LIBRARY_PATH en Linux


213

Primero ejecuté el comando: export LD_LIBRARY_PATH=/usr/local/lib

A continuación, he abierto .bash_profileel archivo: vi ~/.bash_profile. En este archivo, pongo:

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

Luego, si el terminal se cierra y se reinicia, escribir echo $LD_LIBRARY_PATHno muestra ningún resultado.

¿Cómo establecer el camino de forma permanente?


9
Señalando lo obvio aquí ... Si solo quieres arreglar lo que hiciste, agrega un $, por ejemploexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH
— Cookie

11
solo corre sudo ldconfigdespués de eso
— Necktwi

Esto puede ser una tontería, pero ¿verdad $ source ~/.bash_profile? Tiendo a olvidar eso. Y luego, como @neckTwi dijo ejecutar ldconfig
— ashley

Respuestas:


208

Debería agregar más detalles sobre su distribución, por ejemplo, en Ubuntu, la forma correcta de hacerlo es agregar un .confarchivo personalizado a /etc/ld.so.conf.d, por ejemplo

sudo gedit /etc/ld.so.conf.d/randomLibs.conf

dentro del archivo, se supone que debe escribir la ruta completa al directorio que contiene todas las bibliotecas que desea agregar al sistema, por ejemplo

/home/linux/myLocalLibs

recuerde agregar solo la ruta al directorio, no la ruta completa del archivo, todas las bibliotecas dentro de esa ruta se indexarán automáticamente.

Guarde y ejecute sudo ldconfigpara actualizar el sistema con esta biblioteca.


Perdón por no mencionar la distribución. Es Fedora 16
— singha

puede usar esta solución para Fedora, la solución sugerida por Joachim Pileborg es útil si decide limitar la vista de estas bibliotecas a 1 usuario específico, si desea una biblioteca de todo el sistema debe usar mi solución. Todo depende de lo que estés buscando.
— user1824407

11
¿Es esta realmente la forma correcta? Supongamos que tiene varios usuarios construyendo bibliotecas locales y ha agregado ambos a /etc/ld.so.conf.d. Ahora el usuario A puede enlazar con las bibliotecas locales del usuario B. No está bien.
— ergosys 01 de

/usr/local/libgeneralmente ya está allí, por lo que no es necesario editar ningún archivo, solo sudo ldconfig.
— nyuszika7h

1
¡Es extraño que funcionó con todos ustedes, sin embargo, no funcionó para mí, mientras que la export LD_LIBRARY_PATH ....forma funciona!
— Contador م

106

Mantenga la ruta anterior, no la sobrescriba:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/

Puede agregarlo a su ~ / .bashrc:

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc

36

Añadir

LD_LIBRARY_PATH = "/ path / you / want1: / path / you / want / 2"

a /etc/environment

Ver la documentación de Ubuntu .

CORRECCIÓN: Debería seguir mi propio consejo y leer la documentación. Dice que esto no se aplica a LD_LIBRARY_PATH: desde Ubuntu 9.04 Jaunty Jackalope, LD_LIBRARY_PATH no se puede establecer en $ HOME / .profile, / etc / profile, ni / etc / environment files. Debe usar los archivos de configuración /etc/ld.so.conf.d/ .conf. * Entonces la respuesta del usuario1824407 es acertada.


Wow, miré esa página varias veces y pasé por alto eso. Gracias por verlo y llamar nuestra atención.
— Michael Scheper

44
Ubuntu es un caso especial aquí. La opinión de Ubuntu es que todos los usuarios quieren las mismas bibliotecas y que solo hay un lugar para cada biblioteca (lea la discusión en Launchpad bug # 366728). Sin embargo, en los sistemas de investigación o desarrollo multiusuario, desea que cada usuario pueda tener sus propias versiones de bibliotecas. La mayoría de las distribuciones de Linux lo permiten y lo han hecho durante muchos años.
— Joachim Wagner

9
Pasé 4 horas tratando de averiguar por qué puedo configurar PATH y PKG_CONFIG_PATH, pero no LD_LIBRARY_PATH. Ni siquiera puedo.
— Mikhail Cheshkov

@JoachimWagner Sí, esto es correcto, y por qué conda y / o bioconda o virtenv es ahora un método preferido para invocar un programa particular con variables ambientales especiales. Al utilizar entornos encerrados, establecer inadvertidamente la ruta LD_LIBRARY no tendrá problemas / problemas sistémicos.
— Andor Kiss

23

El archivo .bash_profilesolo se ejecuta mediante shells de inicio de sesión. Es posible que deba ponerlo ~/.bashrc, o simplemente cerrar sesión e iniciar sesión nuevamente.


Gracias Joachim Pileborg. He reiniciado el sistema y ahora su ruta está establecida de forma permanente.
— singha

21

Alternativamente, puede ejecutar el programa con el directorio de biblioteca especificado:

/lib/ld-linux.so.2 --library-path PATH EXECUTABLE

Lee más aquí .


2
También me ayudó
— spt025

17

Por alguna razón, nadie ha mencionado el hecho de que el bashrc necesita ser recuperado después de la edición. Puede cerrar sesión y volver a iniciarla (como se mencionó anteriormente) pero también puede usar los comandos: source ~/.bashrco . ~/.bashrc.


14

Poner export LD_LIBRARY_PATH=/usr/local/liben ~/.bashrc[preferentemente hacia el final de la secuencia de comandos para evitar cualquier anulación en el medio, por defecto ~/.bashrcviene con muchas if-elsedeclaraciones]

Publica que cada vez que abras una nueva terminal / konsole, LD_LIBRARY_PATHse reflejará


Perdón por no mencionar la distribución. Es Fedora 16
— singha

7
  1. Vaya a la carpeta de inicio y edite .profile
  2. Coloque la siguiente línea al final

    export LD_LIBRARY_PATH=<your path>

  3. Guardar y Salir.

  4. Ejecute este comando

    sudo ldconfig


3

Hago lo siguiente en Mint 15 a 17, también funciona en el servidor ubuntu 12.04 y superior:

sudo vi /etc/bash.bashrc 

desplácese hasta el final y agregue:

export LD_LIBRARY_PATH=.

Todos los usuarios tienen la variable de entorno agregada.


3

Puede intentar agregar un script personalizado, digamos myenv_vars.shen /etc/profile.d.

cd /etc/profile.d
sudo touch myenv_vars.sh
sudo gedit myenv_vars.sh

Agregue esto al archivo vacío y guárdelo.

export LD_LIBRARY_PATH=/usr/local/lib

Cerrar sesión e iniciar sesión, LD_LIBRARY_PATHse habrá establecido de forma permanente.


1
Impresionante respuesta. La mejor opción para mí para exportar una ruta cada vez durante la inicialización del sistema y mucho más seguro que editar físicamente / etc / bashrc
— Joseph
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.