Estoy construyendo un programa C ++ simple y quiero sustituir temporalmente una biblioteca compartida suministrada por el sistema con una versión más reciente del mismo, para desarrollo y pruebas.
Intenté configurar la variable LD_LIBRARY_PATH pero el enlazador (ld) falló con:
/ usr / bin / ld: no se puede encontrar -lyaml-cpp
Esperaba que funcionara porque de acuerdo con la página de manual de ld:
El vinculador utiliza las siguientes rutas de búsqueda para localizar las bibliotecas compartidas requeridas: ... Para un vinculador nativo, el contenido de la variable de entorno "LD_LIBRARY_PATH" ...
Luego intenté configurar LIBRARY_PATH, y eso funcionó.
De acuerdo con el manual de GCC:
El valor de LIBRARY_PATH es una lista de directorios separados por dos puntos, al igual que PATH. Cuando se configura como un compilador nativo, GCC prueba los directorios así especificados cuando busca archivos vinculadores especiales, si no puede encontrarlos usando GCC_EXEC_PREFIX. Vincular usando GCC también usa estos directorios cuando busca bibliotecas ordinarias para la opción -l (pero los directorios especificados con -L son lo primero).
Como sugiere el manual (GCC), LIBRARY_PATH funciona porque me conecto con GCC.
Pero..
- Como me conecto con gcc, ¿por qué se llama a ld, como sugiere el mensaje de error?
- ¿Cuál es el punto de tener dos variables que tengan el mismo propósito? ¿Hay otras diferencias?