gcc
y ld
proporcionan muchas formas de especificar una ruta de búsqueda para las bibliotecas, entre ellas las banderas -rpath
y -L
. Las páginas de manual no revelan diferencias entre estos dos indicadores, diciendo efectivamente que cada indicador agrega una biblioteca a la ruta de búsqueda de la biblioteca. Sin embargo, parece extraño que ambas banderas hagan exactamente lo mismo . ¿Cuáles son las diferencias, si las hay, entre estas dos opciones?¿Cuál es la diferencia entre -ruta y -L?
Respuesta
Usted debe estar leyendo algunas copias no actualizadas de las páginas de manual (énfasis añadido):
-rpath = dir
añadir un directorio a la ruta de búsqueda de bibliotecatiempo de ejecución. Esto se usa
cuando se vincula un ejecutable ELF con objetos compartidos. Todo -rpath
argumentos se concatenan y se pasa al tiempo de ejecución enlazador, que
les utiliza para localizar objetos compartidos en tiempo de ejecución .
vs
-L searchdir
--library-path = searchdir
Añadir searchdir ruta de la lista de rutas que ld buscará los
bibliotecas de archivos y scripts de control ld.
Así, -L
dice ld
dónde buscar bibliotecas para enlazar con al vincular. Se usa esto (por ejemplo) cuando compila contra bibliotecas en su árbol de compilación, que se colocará en las rutas normales de la biblioteca del sistema al make install
. --rpath
, por otro lado, almacena esa ruta dentro del ejecutable, de modo que el enlazador dinámico de tiempo de ejecución pueda encontrar las bibliotecas. Usted usa esto cuando sus bibliotecas están fuera de la ruta de búsqueda de la biblioteca del sistema.
Notas: 1. La mayoría de las veces, cuando se necesita '-rpath =/some/weird/path', también se necesita' -L/some/weird/path'. 2. Con 'gcc' uno necesita usar' -Wl, -rpath = dir'. –
Todavía no entiendo por qué se necesitan ambos. Tengo la misma experiencia que n.m. encima. ¿Qué información se necesita de la biblioteca en tiempo de compilación? Además de posibles h-files, de causa. Pero eso es otra cosa que supongo ... –
@FredrikJohansson Ese sería un tema razonable para una nueva pregunta (suponiendo que no se haya preguntado ya, por supuesto). Los símbolos disponibles son necesarios, al menos, pero probablemente haya otras cosas. – derobert
- 1. Diferencia entre prueba -h y prueba -L
- 2. ¿Cuál es la diferencia entre -I y -L en el archivo MAKE?
- 3. ¿Cuál es la diferencia entre LD_LIBRARY_PATH y -L en el momento del enlace?
- 4. ¿Cuál es la diferencia entre {0} y ""?
- 5. Cuál es la diferencia entre = y: =
- 6. ¿Cuál es la diferencia entre .ToString (+) y ""
- 7. Cuál es la diferencia entre $ (...) y `...`
- 8. ¿cuál es la diferencia entre:.! y: r !?
- 9. ¿Cuál es la diferencia entre ".equals" y "=="?
- 10. ¿Cuál es la diferencia entre dict() y {}?
- 11. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 12. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 13. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 14. ¿Cuál es la diferencia entre + = y = +?
- 15. ¿Cuál es la diferencia entre " " y ""?
- 16. Cuál es la diferencia entre $ y jQuery
- 17. ¿Cuál es la diferencia entre: = y + = en el archivo make?
- 18. ¿Cuál es la diferencia entre Href y Url.Content?
- 19. ¿Cuál es la diferencia entre Eclipse 3.7 y Eclipse 4.1?
- 20. ¿Cuál es la diferencia entre RewriteRule y redirigir 301
- 21. ¿Cuál es la diferencia entre DOCUMENT_URI y URI_REQUEST en SSI?
- 22. ¿Cuál es la diferencia entre url.getFile() y getpath()?
- 23. cuál es la diferencia entre bundle.setup y bundle.require
- 24. ¿Cuál es la diferencia entre la vía y la ruta de un archivo GPX
- 25. ¿cuál es la diferencia entre la tecla individual y la ruta clave?
- 26. ¿Cuál es la diferencia entre la ruta y la URL en iOS?
- 27. ¿Cuál es la diferencia entre Server.MapPath y HostingEnvironment.MapPath?
- 28. ¿cuál es la diferencia entre DEFAULT_SIZE y PREFERRED_SIZE?
- 29. ¿Cuál es la diferencia entre establecer la ruta de compilación classpath y java en eclipse?
- 30. OpenGL (ES) - ¿Cuál es la diferencia entre frustum y orto?
¿Quizás estás pensando en '-rpath-link'? – ams