¿Cuál es la diferencia entre -rpath y -L?

89

gccy ldproporcionan muchas formas de especificar una ruta de búsqueda para bibliotecas, entre ellas, los indicadores -rpathy -L. Las páginas de manual no revelan diferencias entre estos dos indicadores, y efectivamente dicen 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?

Craig M. Brandeburgo
fuente
2
¿Quizás estás pensando -rpath-link?
ams

Respuestas:

106

Debe estar leyendo algunas copias desactualizadas de las páginas de manual (énfasis agregado):

-rpath = dir
      Agrega un directorio a la ruta de búsqueda de la biblioteca en tiempo de ejecución . Se utiliza
      al vincular un ejecutable ELF con objetos compartidos. Todos los
      argumentos -rpath se concatenan y pasan al vinculador en tiempo de ejecución , que los
      usa para localizar objetos compartidos en tiempo de ejecución.

vs.

-L searchdir
--library-path = searchdir
      Agrega la ruta searchdir a la lista de rutas en las que ld buscará
      bibliotecas de archivos y scripts de control de ld.

Por lo tanto, -Lindica lddónde buscar bibliotecas para vincular al vincular. Use esto (por ejemplo) cuando esté compilando contra bibliotecas en su árbol de compilación, que se colocará en las rutas normales de la biblioteca del sistema por make install. --rpath, por otro lado, almacena esa ruta dentro del ejecutable, de modo que el enlazador dinámico en tiempo de ejecución pueda encontrar las bibliotecas. Use esto cuando sus bibliotecas están fuera de la ruta de búsqueda de la biblioteca del sistema.

derobert
fuente
16
Notas: 1. La mayoría de las veces, cuando se necesita -rpath=/some/weird/path, -L /some/weird/pathtambién se necesita . 2. Con gccuna necesidad de uso -Wl,-rpath=dir.
n. 'pronombres' m.
4
Todavía no entiendo por qué se necesitan ambos. Tengo la misma experiencia que nm arriba. ¿Qué información se necesita de la biblioteca en el momento de la construcción? Aparte de posibles archivos h, de causa. Pero eso es otra cosa, supongo ...
Fredrik Johansson
1
@FredrikJohansson Ese sería un tema razonable para una nueva pregunta (suponiendo que aún no se haya preguntado, por supuesto). Los símbolos disponibles son necesarios, al menos, pero probablemente haya otras cosas.
derobert
4
Pregunta de seguimiento agregada en: stackoverflow.com/questions/28096133/…
Fredrik Johansson