Localizando as versões da biblioteca em que 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 ideia era tentar encontrar as versões de bibliotecas diferentes usadas (por exemplo, o kernel), sabendo que essas versões mudavam com versões diferentes. Eu tentei usar nm e ldd , mas não consigo encontrar nenhuma informação relevante.

Alguma sugestão?

    
por nbubis 21.06.2012 / 17:01

1 resposta

5

Talvez

 readelf -a 

Exibe informações sobre arquivos ELF. Se o objeto que você está estudando ainda contiver a seção de comentários, você pode tentar extraí-lo por

 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 as mesmas informações.

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 comando readelf -a se ela for uma biblioteca compilada c ++. Note que esta é a versão dos símbolos fornecidos ao compilador e não necessariamente a versão do compilador. Eu não sei o quão útil seria rastrear a versão do Ubuntu.

    
por 21.06.2012 / 17:08