Sto creando un semplice programma C ++ e voglio sostituire temporaneamente una libreria condivisa fornita dal sistema con una versione più recente di essa, per lo sviluppo e il testing.
Ho provato a impostare la variabile LD_LIBRARY_PATH ma il linker (ld) non è riuscito con:
/ usr / bin / ld: impossibile trovare -lyaml-cpp
Mi aspettavo che funzionasse perché secondo la pagina man di ld:
Il linker utilizza i seguenti percorsi di ricerca per individuare le librerie condivise richieste: ... Per un linker nativo, il contenuto della variabile di ambiente "LD_LIBRARY_PATH" ...
Ho quindi provato a impostare LIBRARY_PATH e ha funzionato.
Secondo il manuale GCC:
Il valore di LIBRARY_PATH è un elenco di directory separato da due punti, molto simile a PATH. Se configurato come compilatore nativo, GCC prova le directory così specificate durante la ricerca di file linker speciali, se non riesce a trovarli usando GCC_EXEC_PREFIX. Il collegamento tramite GCC utilizza anche queste directory quando si cercano le librerie ordinarie per l'opzione -l (ma le directory specificate con -L vengono prima).
Come suggerisce il manuale (GCC), LIBRARY_PATH funziona perché mi collego a GCC.
Ma..
- Da quando mi collego a gcc, perché viene chiamato ld, come suggerisce il messaggio di errore?
- Qual è il punto di avere due variabili che servono allo stesso scopo? Ci sono altre differenze?