Menemukan versi perpustakaan yang ditautkan dengan perpustakaan

8

Saya memiliki perpustakaan yang dikompilasi pada mesin Ubuntu yang tidak dikenal, Dan saya ingin menentukan versi Ubuntu yang dimiliki mesin tersebut pada waktu kompilasi.

Gagasan saya adalah mencoba dan menemukan versi-versi dari berbagai pustaka yang digunakan (misalnya kernel), mengetahui bahwa versi-versi ini berubah dengan rilis yang berbeda. Iv'e mencoba menggunakan nmdan ldd, tetapi sepertinya saya tidak dapat menemukan info yang relevan.

Ada saran?

nbubis
sumber

Jawaban:

5

Mungkin

 readelf -a 

Ini menampilkan informasi tentang file ELF. Jika objek yang Anda pelajari masih berisi bagian komentar, Anda dapat mencoba mengekstraknya

 readelf -p .comment yourfile

Sebagai contoh

$ 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 dapat memberikan informasi yang sama.

Jika bagian komentar dilucuti, Anda dapat mencoba membaca info versi simbol runtime GCC dari readelf -aperintah jika itu adalah pustaka yang dikompilasi c ++. Catatan, itu adalah versi simbol yang disediakan untuk kompiler dan belum tentu versi kompiler. Saya tidak tahu seberapa berguna itu untuk melacak versi Ubuntu.

Jari Laamanen
sumber
Tidak .. Itu tidak terlihat menjanjikan: OS / ABI: UNIX - System V ABI Versi: 0
nbubis
Bisakah Anda menjelaskan bagaimana Anda melakukannya? Iv'e telah melalui output readelf, dan belum menemukan sesuatu yang berguna. Terima kasih!
nbubis
Saya telah mengedit jawaban untuk berisi contoh.
Jari Laamanen