Pregunta

¿Cuál es el mejor lugar para configurar la variable LD_LIBRARY_PATH específica de la aplicación en Solaris? ¿Cómo funciona

  

LD_LIBRARY_PATH

¿trabajo variable?

Actualmente lo configuramos en .kshrc , pero diferentes aplicaciones necesitan diferentes versiones del marco de mensajería, pero estas aplicaciones se ejecutan bajo el mismo uso y, por lo tanto, necesitarían diferentes LD_LIBRARY_PATH , entonces, en tu opinión, ¿cuál es el mejor lugar para establecer esta variable?

Básicamente, estoy tratando de descubrir cómo hacer que esta ruta variable forme parte de la aplicación en lugar del entorno del usuario específico.

¿Fue útil?

Solución

Por lo general, solo tendría un script de shell que inicia la aplicación. En el script de shell, establecería LD_LIBRARY_PATH en lo que sea que necesite para esa aplicación, y luego haga que el script inicie esa aplicación. Hacerlo de esa manera debería hacer que la ruta se establezca solo para esa aplicación.

Otros consejos

Puede encontrar una descripción formal de LD_LIBRARY_PATH en la página de manual de "ld.so.1", es decir, ejecutar "man ld.so.1". También describe algunas otras variables respetadas por el vinculador de tiempo de ejecución.

Además de LD_LIBRARY_PATH , los archivos ejecutables y las bibliotecas compartidas también pueden tener una ruta de búsqueda integrada para las bibliotecas. Si está ejecutando una aplicación que usted mismo ha vinculado, puede usar la opción -d de ld para configurar la ruta integrada (tanto Sun CC como gcc tienen opciones para hacer lo mismo). Esto puede permitirle evitar usar LD_LIBRARY_PATH en primer lugar.

Vladr, alanc está en lo correcto.

No se recomienda configurar LD_LIBRARY_PATH en Solaris. En absoluto.

Si necesita hornear una ruta de ejecución específica en su biblioteca o ejecutable, entonces deberías usar la bandera -R para el enlazador. Si está construyendo con gcc, entonces use -Wl, Rpath (creo).

Si necesita hacer esto para un paso posterior a la compilación (por ejemplo, porque le falta fuente para recompilar), luego elfedit (1) te ayudará mucho. Esta documentado en la página de manual y también en la Guía de bibliotecas Linker + en http: // docs.oracle.com/cd/E26502_01/html/E26507/index.html

La respuesta crle es más correcta. En Solaris, LD_LIBRARY_PATH no debe usarse. Use crle en su lugar. Para ver las rutas actuales, simplemente ejecute " crle " por sí mismo. Para actualizar la lista, use crle -u -l / path / to / your / lib / directory . El -u es necesario para escribir cambios en la configuración del sistema, de lo contrario, el cambio será temporal. Vea la página del manual para más opciones.

Acabo de encontrar un caso en el que LD_LIBRARY_PATH global no tiene efecto, tuve que ajustar un script y establecer LD_LIBRARY_PATH antes de la aplicación. crle es una buena solución global si instaló muchas bibliotecas en / opt / csw / lib, a través de pkgutil de blastwave.

Puede verificar su archivo .profile o .profile.user. Habrá una entrada comentada para él. No se recomienda usarlo ya que está roto. Debe compilar los archivos binarios pasando valores a las banderas en lugar de usar el variable.

Puede usar el comando crle:

crle -l / path / to / your / lib / file

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top