Em que ordem o vinculador processa os diretórios da biblioteca?
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.
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.