problemas de bibliotecas compartilhadas no linux
-
10-07-2019 - |
Pergunta
Estou tentando compilar / vincular um muito velho pedaço de software em um sistema linux e eu não posso para alguma ligação a razão com uma biblioteca compartilhada que está instalado no meu sistema.
Eu recebo o seguinte erro do vinculador:
/usr/bin/ld: cannot find -lXaw
No entanto, o próprio lib está instalado. Se eu executar
ldconfig -v | grep libXaw
Eu recebo (entre outras coisas) este hit:
libXaw.so.7 -> libXaw7.so.7.0.0
A biblioteca e os links para ele estão em / usr / lib btw. Então, nada de especial.
Assim, a biblioteca está lá e achados ldconfig TI. O que poderia ld causa ld de não encontrar a biblioteca durante a ligação em tempo? Como você já deve ter adivinhado que eu sou muito novo para o material da biblioteca compartilhada.
Todas as idéias?
Solução
O ligador pode estar procurando, literalmente, por "libXaw.so". É que em / usr / lib? Se não, você poderia tentar adicioná-lo como uma outra ligação suave da libXaw7.so.7.0.0.
Outras dicas
A razão para a ligação simbólica btw é selecionar a versão padrão para ligação contra no caso de múltiplas versões, tenha em mente o nome da biblioteca está integrado no binário. (Que você pode ver com ldd).
Os diretórios de biblioteca -L sendo substituído, e ele não está procurando em / usr / lib?
Para ligá-lo, você precisa do arquivo .a, não o arquivo .so, que é a biblioteca de tempo de execução. O objeto compartilhado só é útil para um programa já ligados contra as partes não compartilhadas de uma biblioteca. Isso normalmente é distribuído em um arquivo ".a".