Localizando as versões da biblioteca às quais uma biblioteca foi vinculada


8

Eu tenho uma biblioteca que foi compilada em uma máquina Ubuntu desconhecida e gostaria de determinar qual versão do Ubuntu essa máquina tinha no momento da compilação.

Minha idéia era tentar encontrar as versões das diferentes bibliotecas usadas (por exemplo, o kernel), sabendo que essas versões mudavam com diferentes versões. Iv'e tentou usar nme ldd, mas não consigo encontrar nenhuma informação relevante.

Alguma sugestão?

Respostas:


5

Talvez

 readelf -a 

Ele exibe informações sobre arquivos ELF. Se o objeto que você estiver estudando ainda contiver a seção de comentários, tente extraí-lo

 readelf -p .comment yourfile

Por exemplo

$ cat test.c
int main () {
  return 0;
}
$ gcc test.c
$ readelf -p .comment a.out

String dump of section '.comment':
  [     0]  GCC: (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

objdump poderia fornecer a mesma informação.

Se a seção de comentários for removida, você pode tentar ler as informações da versão do símbolo de tempo de execução do GCC no readelf -acomando se for uma biblioteca compilada em c ++. Observe que essa é a versão dos símbolos fornecidos ao compilador e não necessariamente a versão do compilador. Não sei o quanto isso seria útil para rastrear a versão do Ubuntu.


Nope .. Não parece promissor: OS / ABI: UNIX - System V ABI Versão: 0
nbubis

Você poderia explicar como você faz isso? Iv'e examinou a saída readelf e não encontrou nada útil. Obrigado!
Nbubis

Editei a resposta para conter um exemplo.
Jari Laamanen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.