Por que o LD continua exibindo “nenhuma informação de versão disponível”

6

Em cada carregamento de uma lib, recebo o erro:

no version information available

Esta biblioteca foi compilada em outro PC (Ubuntu 10.04) do que a que está sendo executada (mandriva 2010.2).

$ ldd /usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so
/usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so: /lib/libz.so.1: no version information available (required by /usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so)
 linux-gate.so.1 =>  (0xffffe000)
 libz.so.1 => /lib/libz.so.1 (0xb77a7000)
 libc.so.6 => /lib/i686/libc.so.6 (0xb7655000)
 /lib/ld-linux.so.2 (0xb787a000)

Editar: a solução alternativa não funcionou.

    
por ofaurax 20.01.2011 / 16:19

2 respostas

9

Não, isso não acontece. Parece que a versão da libz que você vinculou ao compilar seu programa foi construída com ferramentas diferentes da versão do sistema madriva que você está usando. A cópia do mandriva está faltando a informação da versão do símbolo que estava presente na cópia da biblioteca libz com a qual seu programa originalmente foi vinculado. Isso tem a ver com as diferenças nos respectivos ambientes de construção, não com as versões da própria biblioteca libz.

Eu suspeito que você continuará a receber a mensagem até que você forneça uma cópia da libz que foi construída com o mesmo conjunto de ferramentas do seu binário, ou seja, um conjunto de ferramentas que insere versões de símbolos na biblioteca. Ou construa seu binário com ferramentas similares àquelas usadas quando a libz foi compilada em seu sistema mandriva, portanto nenhuma referência de versão de símbolo está presente no binário.

Veja: link http://www.linux-kongress.org/1997/youngdale.html link

Não conheço nenhuma ferramenta que permita modificar o binário compilado no outro sistema para excluir as referências de versão de símbolo que você não deseja e deixar todas as outras, se houver.

    
por 26.01.2012 / 09:08
3

Esse erro, "nenhuma informação de versão disponível", significa que a versão da libz que você vinculou ao compilar a biblioteca é mais recente que a versão no sistema mandrivia que você está usando.

    
por 20.01.2011 / 16:55