Поиск версий библиотеки, с которой была связана библиотека

8

У меня есть библиотека, скомпилированная на неизвестном компьютере с Ubuntu, и я хотел бы определить, какая версия Ubuntu была на этом компьютере во время компиляции.

Моя идея состояла в том, чтобы попытаться найти версии различных используемых библиотек (например, ядра), зная, что эти версии менялись в разных выпусках. Я пытался использовать nmи ldd, но я не могу найти какую-либо соответствующую информацию.

Какие-либо предложения?

nbubis
источник

Ответы:

5

Может быть

 readelf -a 

Он отображает информацию о файлах ELF. Если объект, который вы изучаете, все еще содержит раздел комментариев, вы можете попробовать извлечь его с помощью

 readelf -p .comment yourfile

Например

$ 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 может предоставить ту же информацию.

Если раздел комментариев удален, вы можете попытаться прочитать информацию о версии символа времени выполнения GCC из readelf -aкоманды, если это скомпилированная библиотека c ++. Обратите внимание, что это версия символов, предоставляемых компилятору, а не обязательно версия компилятора. Я не знаю, насколько это полезно для отслеживания версии Ubuntu.

Яри ​​Лааманен
источник
Нет .. Это не выглядит многообещающе: OS / ABI: UNIX - System V ABI Версия: 0
nbubis
Не могли бы вы объяснить, как вы это делаете? Я прошел через вывод readelf и не нашел ничего полезного. Спасибо!
nbubis
Я отредактировал ответ, чтобы содержать пример.
Яри ​​Лааманен