¿Qué es LD_LIBRARY_PATH y cómo usarlo?

Participo en el desarrollo de un proyecto Java, que utiliza algunos componentes C ++, por lo que necesito Jacob.dll. (en Windows 7)

Sigo recibiendo java.lang.UnsatisfiedLinkError: no JacobDB in java.library.path no importa dónde coloque Jacob.dll ….

Busqué posibles decisiones y la que hasta ahora no he probado es establecer la variable LD_LIBRARY_PATH, apuntando al archivo .dll.

Tengo poca experiencia y no estoy familiarizado con cuál debería ser el significado y el uso de esa variable. ¿Me pueden ayudar?

Normalmente, debe establecer java.library.path en la línea de comandos de la JVM:

 java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass 

LD_LIBRARY_PATH es la variable de entorno predefinida en Linux / Unix que establece la ruta a la que debe mirar el vinculador al vincular bibliotecas dinámicas / bibliotecas compartidas.

LD_LIBRARY_PATH contiene una lista de rutas separadas por dos puntos y el enlazador da prioridad a estas rutas sobre las rutas de biblioteca estándar /lib y /usr/lib . Se seguirán buscando las rutas estándar, pero solo después de que se haya agotado la lista de rutas en LD_LIBRARY_PATH .

La mejor forma de utilizar LD_LIBRARY_PATH es establecerlo en la línea de comandos o el script inmediatamente antes de ejecutar el progtwig. De esta forma, la nueva LD_LIBRARY_PATH aisló del rest de su sistema.

Ejemplo de uso:

 $ export LD_LIBRARY_PATH="/list/of/library/paths:/another/path" $ ./program 

Como usted habla de .dll usted está en un sistema de Windows y un .dll debe colocarse en una ruta que el enlazador busca en el tiempo del enlace, en Windows, esta ruta la establece la variable de entorno PATH , de modo que agregue ese .dll a PATH y debería funcionar bien

LD_LIBRARY_PATH es específico de Linux y es una variable de entorno que apunta a directorios donde el cargador dynamic debería buscar bibliotecas compartidas.

Intenta agregar el directorio donde está tu .dll en la variable PATH. Windows buscará automáticamente en los directorios listen en esta variable de entorno. LD_LIBRARY_PATH probablemente no resolverá el problema (a menos que la JVM lo use, no sé de eso).

Bueno, el mensaje de error le dice qué hacer: agregue la ruta donde Jacob.dll reside a java.library.path. Puedes hacer eso en la línea de comando de esta manera:

 java -Djava.library.path="dlls" ... 

(suponiendo que Jacob.dll está en la carpeta “dlls”)

También vea java.lang.UnsatisfiedLinkError no *****. Dll en java.library.path

Mi error también estuvo relacionado con no encontrar el archivo .so requerido por un servicio. Utilicé la variable LD_LIBRARY_PATH para priorizar la ruta elegida por el enlazador para buscar la lib requerida.

Copié el servicio y el archivo .so en una carpeta y lo alimenté a la variable LD_LIBRARY_PATH como

 LD_LIBRARY_PATH=. ./service 

estar en la misma carpeta que he dado el comando anterior y funcionó.

LD_LIBRARY_PATH es la ruta de biblioteca predeterminada a la que se accede para comprobar si hay bibliotecas dinámicas y compartidas disponibles. Es específico para las distribuciones de Linux.

Es similar a la variable de entorno PATH en Windows que el vinculador comprueba posibles implementaciones durante el tiempo de enlace.