gcc linker shared-libraries ld

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



linker shared-libraries (1)

Debe leer algunas copias obsoletas de las páginas de manual (énfasis agregado):

-ruta = dir
Agregue un directorio a la ruta de búsqueda de la biblioteca de tiempo de ejecución . Esto es usado
cuando se vincula un ejecutable ELF con objetos compartidos. Todo-sendero
los argumentos se concatenan y pasan al enlazador en tiempo de ejecución , que
los usa para ubicar objetos compartidos en tiempo de ejecución.

vs.

-L searchdir
--library-path = searchdir
Agregue pathdirir de ruta a la lista de rutas que l buscará
bibliotecas de archivos y scripts de control ld.

Por lo tanto, -L le dice a ld dónde buscar bibliotecas para vincular cuando se vincula. Usted usa esto (por ejemplo) cuando construye contra bibliotecas en su árbol de compilación, que se make install en las rutas normales de la biblioteca del sistema. --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.

gcc y ld proporcionan muchas formas de especificar una ruta de búsqueda para las bibliotecas, entre ellas, las -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?