Para mayor comodidad, agregué las páginas de manual relevantes a continuación.No entiendo -Wl, -rpath -Wl,
Mi (des) conocimiento en primer lugar: Si necesito para separar opciones con ,
, eso significa que el segundo -Wl
no es otra opción, ya que viene antes ,
que significa que es un argumento para la opción -rpath
.
No entiendo cómo -rpath
puede tener un argumento -Wl,.
!
Lo que tendría sentido en mi mente sería la siguiente:
-Wl,-rpath .
Esto debería invocar opción del vinculador -rpath con el argumento directorio actual.
hombre gcc:
-Wl, opción
opción Pass como una opción para la enlazador. Si la opción contiene comas, se divide en múltiples opciones en las comas . Puede usar esta sintaxis para pasar un argumento a la opción. Para ejemplo,
-Wl,-Map,output.map
pasa-Map output.map
al vinculador. Cuando usa el enlazador GNU, también puede obtener el mismo efecto con `-Wl, -Map = output.map '.
hombre ld:
-rpath = dir
añadir un directorio a la ruta de búsqueda de biblioteca de tiempo de ejecución . Esto es utilizado al vincular un archivo ejecutable ELF con objetos compartidos. Todos los argumentos -rpath se concatenan y pasan al enlazador en tiempo de ejecución, que los usa para localizar objetos compartidos en tiempo de ejecución. La opción -rpath también se utiliza cuando se encuentran objetos compartidos que son necesarios para los objetos compartidos explícitamente incluidos en el enlace;
Oh, ahora entiendo, no hay discriminación entre la opción o el argumento al pasar cosas al enlazador, es solo una cadena. ¡Entonces el segundo -Wl es redundante! Gracias :) – Blub
@Blub: ¡No es redundante! Es una forma alternativa, usted * cualquiera * dice '-Wl, -rpath, .' * o * usted dice' -Wl, -rpath -Wl, .'. Precisamente uno de los dos, no se puede omitir nada. –