Es posible que exista más de una instancia de la biblioteca en la ruta de búsqueda durante la compilación. ¿En qué orden se incluirán los directorios de proceso del vinculador en la ruta de búsqueda? La plataforma en cuestión es Sun OS.¿En qué orden el enlazador procesa los directorios de la biblioteca?
Respuesta
Los directorios se buscan en el orden en que se especifican en la línea de comandos. Los directorios especificados en la línea de comando se buscan antes que los directorios predeterminados. Todas las opciones de -L se aplican a todas las opciones -l, independientemente del orden en que aparezcan las opciones. LD_LIBRARY_PATH también se puede usar para complementar la ruta de búsqueda de la biblioteca. La búsqueda en el directorio se detiene en el primer directorio que contiene la biblioteca correspondiente.
LD_LIBRARY_PATH es difícil sin embargo:
LD_LIBRARY_PATH
una lista de directorios en los que buscar bibliotecas especificados con la opción -l. Varios directorios están separados por dos puntos. En el caso más general, contendrá dos listas de directorios separados por un punto y coma :
dirlist1; dirlist2
Si ld se llama con cualquier número de ocurrencias de L, como en:
ld . . . -Lpath1 . . . -Lpathn . . .
entonces el pedido ruta de búsqueda es:
dirlist1 path1 . . . pathn dirlist2 LIBPATH
Cuando la lista de directorios no contiene un punto y coma, es interpretado como dirlist2.
LD_LIBRARY_PATH también se utiliza para especificar los directorios de búsqueda de bibliotecas en el vinculador de tiempo de ejecución. Es decir, si existe LD_LIBRARY_PATH en el entorno , el enlazador en tiempo de ejecución será buscar en los directorios nombrados en ella, antes de su directorio por defecto, por objetos compartidos a estar vinculados con el programa en ejecución.
Por favor, lee más al respecto here.
- 1. ¿Tiene importancia el orden de las opciones -l y -L en el enlazador GNU?
- 2. algunas preguntas sobre el orden de búsqueda del enlazador GCC
- 3. ¿Por qué el enlazador de C++ requiere los archivos de la biblioteca durante una compilación, aunque estoy vinculando dinámicamente?
- 4. Estructura de directorios para una biblioteca C++
- 5. python enumerando los directorios en un orden diferente basado en la plataforma
- 6. ¿Cómo el enlazador gcc elige/usr/lib versus/usr/lib64 para la resolución de la biblioteca?
- 7. ¿Por qué Paypal Sandbox no procesa los pagos?
- 8. ¿Qué hace la bandera del enlazador -toda_carga?
- 9. ¿Qué hace la bandera del enlazador -ObjC?
- 10. Buscando biblioteca java para sincronización de directorios
- 11. Lista de directorios basada en el tiempo
- 12. Error de enlazador de XCode: biblioteca no encontrada para -lAdMobDevice
- 13. ¿Cómo se maneja el orden de los mensajes en JMS?
- 14. grep en todos los directorios
- 15. ¿Por qué la optimización del enlazador es tan pobre?
- 16. Cómo establecer correctamente la ruta "Directorios/Condicionales" y "Biblioteca"
- 17. imponiendo la orden de carga de la biblioteca
- 18. ¿Por qué la biblioteca de tiempo de ejecución es una opción de compilación en lugar de una opción de enlazador?
- 19. ¿Cómo cambiar el nombre de los directorios?
- 20. zombi procesa
- 21. ¿Puedo forzar que os.walk de python3 visite los directorios en orden alfabético? ¿cómo?
- 22. Enlazador para Clang?
- 23. ¿Para qué se utilizan los diferentes directorios en @INC?
- 24. dependiendo de los directorios en make
- 25. Preguntas sobre enlazador de GCC
- 26. El orden de los datos en la memoria
- 27. ¿Qué permisos tienen los scripts/directorios de PHP?
- 28. ¿Por qué el enlazador ld permite múltiples definiciones de clase con los mismos métodos?
- 29. Multiple .NET procesa la huella de memoria
- 30. El orden de los elementos en el diccionario
Solo para confirmar, ¿es correcto que LD_LIBRARY_PATH se considere después de todas las opciones -L? – Leonid
No, en realidad no. Depende si contiene un punto y coma o no. Si no lo hace, entonces va después de todo -L; en caso contrario, liste antes de que el punto y coma pase primero, luego todas las opciones -L, luego liste después de un punto y coma. Actualizaré mi respuesta, porque es difícil encontrar esto en ese gran documento. También tenga en cuenta que esto se aplica al enlazador Sun, no al de GNU. No estoy seguro de cuál estás usando. –