9

glibc (そして、私の知る限り、glibstd++ も) がシンボルのバージョン管理メカニズムを使用していることはよく知られています。(詳細については 、特定の glibc バージョンにリンクするにはどうすればよいかを参照してください。)

問題は、GLIBC と GLIBCXX の正確なバージョンを決定する方法であり、libc と libstdc++ からの名前のリンカによって選択されますか? たとえば、次のようなものを取得する方法は次のとおりです。

time -> time@GLIBC_2_5
...
gethostbyname -> gethostbyname@GLIBC_2_3

なぜ私たちはこれが必要なのですか?必要な glibc/libstdc++ のバージョンを最小限に抑えたい場合に役立つように思えます。

4

1 に答える 1

15

試すことができることの 1 つはobjdump -T、バイナリで実行することです。

古いバージョンのシンボルへのリンクを検討している場合は、これらの古いバージョンが古い、異なる構造または他の定義にも依存している可能性があることに注意してください。これを回避するには、一致する古いヘッダー ファイルとライブラリを使用してコンパイルおよびリンクします。

于 2010-08-08T22:38:00.130 に答える