ライブラリがリンクされているライブラリのバージョンを見つける


8

不明なUbuntuマシンでコンパイルされたライブラリーがあり、そのマシンがコンパイル時に持っていたUbuntuのバージョンを確認したい。

私の考えは、使用されているさまざまなライブラリ(カーネルなど)のバージョンを探して見つけ、これらのバージョンがさまざまなリリースで変更されたことを知っていた。とを使用nmしてみlddましたが、関連情報を見つけることができません。

助言がありますか?

回答:


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 同じ情報を提供できます。

コメントセクションが削除されている場合、G readelf -a++ ランタイムシンボルのバージョン情報がC ++コンパイル済みライブラリであれば、コマンドから読み取ろうとする ことがあります。これは、コンパイラーに提供されるシンボルのバージョンであり、必ずしもコンパイラーのバージョンではないことに注意してください。Ubuntuのバージョンを追跡するのにどれほど役立つかわかりません。


いいえ、ありません。OS/ ABI:UNIX-System V ABIバージョン:0
nbubis

これをどうやってやるのか説明してくれませんか?readelfの出力を調べましたが、有用なものは何も見つかりませんでした。ありがとう!
nbubis

例を含むように回答を編集しました。
Jari Laamanen、2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.