未知のUbuntuシステムにコンパイルされたライブラリがあり、そのシステムがコンパイルされたUbuntuのバージョンを確認したいと思います。
私の考えは、使用されているさまざまなライブラリ(カーネルなど)のバージョンを探し、これらのバージョンがバージョンに応じて変更されることを知っていることです。試してみましたnm
が、ldd
これに関する情報が見つからないようです。
どんな提案がありますか?
答え1
おそらく
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
同じ情報を提供することができます。
readelf -a
コメント部分が削除された場合C ++コンパイルライブラリの場合は、コマンドからGCCランタイムシンボルのバージョン情報を読み取ることができます。これは、コンパイラに提供されるシンボリックバージョンではなく、必ずしもコンパイラバージョンである必要はありません。 Ubuntuのバージョンを追跡するのがどれほど役に立つのかわかりません。