Estou criando um programa C ++ simples e quero substituir temporariamente uma biblioteca compartilhada fornecida pelo sistema por uma versão mais recente, para desenvolvimento e teste.
Tentei definir a variável LD_LIBRARY_PATH, mas o vinculador (ld) falhou com:
/ usr / bin / ld: não é possível encontrar -lyaml-cpp
Eu esperava que funcionasse porque, de acordo com a página de manual do ld:
O vinculador usa os seguintes caminhos de pesquisa para localizar as bibliotecas compartilhadas necessárias: ... Para um vinculador nativo, o conteúdo da variável de ambiente "LD_LIBRARY_PATH" ...
Eu tentei configurar o LIBRARY_PATH e funcionou.
De acordo com o manual do GCC:
O valor de LIBRARY_PATH é uma lista de diretórios separados por dois pontos, bem como PATH. Quando configurado como um compilador nativo, o GCC tenta os diretórios assim especificados ao procurar arquivos vinculados especiais, se não conseguir encontrá-los usando o GCC_EXEC_PREFIX. A vinculação usando o GCC também usa esses diretórios ao procurar bibliotecas comuns para a opção -l (mas os diretórios especificados com -L são os primeiros).
Como o manual (GCC) sugere, LIBRARY_PATH funciona porque eu vinculo ao GCC.
Mas..
- Desde que eu vinculo ao gcc, por que ld está sendo chamado, como sugere a mensagem de erro?
- Qual é o sentido de ter duas variáveis que servem ao mesmo propósito? Há outras diferenças lá?