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?

Foi útil?

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".

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