C ++バイナリを探索している間にdynがlibstdc++.so.6
に接続されていることがわかりました。libm.so.6
libc.so.6
$ ldd /lib/x86_64-linux-gnu/libstdc++.so.6
linux-vdso.so.1 (0x00007ffcb737b000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd3b2295000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd3b1c00000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd3b2396000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd3b2275000)
私の質問は次のとおりです
6
名前はどういう意味ですか?もともとはglibcバージョンだと思っていましたが、わかりましたらglibcバージョン2.35
とまったく同じですね6
。$ strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_2.3 GLIBC_2.3 ... GLIBC_2.35
このサフィックスはなぜ
6
そんなに人気がありますか?libc.so.7
いつリリースされるのか時刻表はありますか?
ベストアンサー1
6 サフィックスは歴史的な理由で使用されます。man libc
Linuxで。デフォルトでは、LinuxではGNU Cライブラリのフォークが使用されます。今回はメジャーバージョン2から5まで発売されました。バージョン5はELFを使用し、共有ライブラリsonameとして配布されますlibc.so.5
。 GNU Cライブラリのバージョン2がLinuxにリリースされたとき、以前のlibc.so.6
ライブラリとの混乱を避けるために共有ライブラリsonameを使用しました。
関連ライブラリは同じサフィックスを使用します。一部のアーキテクチャでは、わずかに異なるサフィックスを使用します。たとえば、AlphaとItaniumのGNU Cライブラリはlibc.so.6.1
。
GNU Cライブラリは、以前のバージョンとの互換性に関する強力な歴史を持っており、さまざまなメカニズムを使用して、以前のバイナリ(バージョン付きシンボルを含む)を損なうことなく、主要な変更の導入をサポートしています。新しいsoname()は、軽減できない主な変更が絶対に必要な場合にのみ使用されるため、libc.so.7
近い将来そのような変更を見る可能性はほとんどありません。