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?

Singha
fuente
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.

usuario1824407
fuente
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
Ariel Monaco
fuente
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.

MrUser
fuente
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.

Algún tipo programador
fuente
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í .

K15.Multik
fuente
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.

nbroeking
fuente
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á

Anshul
fuente
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

Singingsingh
fuente
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.

Johnnyb
fuente
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.

Metusael Murmu
fuente
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