Pergunta

É possível que exista mais de uma instância da biblioteca no caminho de pesquisa durante a compilação.Em que ordem o vinculador processará os diretórios incluídos no caminho de pesquisa?A plataforma em questão é Sun OS.

Foi útil?

Solução

Os diretórios são pesquisados ​​na ordem em que são especificados na linha de comando.Os diretórios especificados na linha de comando são pesquisados ​​antes dos diretórios padrão.Todas as opções -L se aplicam a todas as opções -l, independentemente da ordem em que as opções aparecem.LD_LIBRARY_PATH também pode ser usado para complementar o caminho de pesquisa da biblioteca.A pesquisa de diretório para no primeiro diretório que contém a biblioteca correspondente.

LD_LIBRARY_PATH é complicado:

LD_LIBRARY_PATH 

Uma lista de diretórios para procurar bibliotecas especificadas com a opção -l.Vários diretórios são separados por um cólon.No caso mais geral, ele conterá duas listas de diretório separadas por um ponto e vírgula:

dirlist1; dirlist2 

Se ld for chamado com qualquer número de ocorrências de -L, como em:

ld . . . -Lpath1 . . . -Lpathn . . .

então a ordem do caminho de pesquisa é:

         dirlist1 path1 . . . pathn dirlist2 LIBPATH

Quando a lista de diretórios não contém um semicolon, ela é interpretada como Dirlist2.

LD_LIBRARY_PATH também é usado para especificar directórios de pesquisa de bibliotecas para o linker de tempo de execução.Isto é, se LD_LIBRARY_PATH existe no ambiente, o linker de tempo de execução procurar os directórios nomeados nele, antes da sua directoria predefinida, para objectos partilhados a serem ligados com o programa durante a execução.

Por favor, leia mais sobre isso aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top