
私のプログラムは libstdc++.so.6 に依存しており、これは /lib64/libstdc++.so.6.0.19 に依存しています。
しかし、私の古い CentOS には libstdc++.so.6 => libstdc++.so.6.0.13 があります
質問
- libstdc++.so.6 のバージョンが 0.19 未満の場合、確認する必要がありますか?
- libstdc++ を libstdc++.so.6.0.19 に更新するにはどうすればよいですか?
答え1
libstc++.so.6.0.13
互換性がlibstdc++.so.0.19
あります。libstdc++ マニュアルCentOS マシン上でプログラムを実行しても問題はないはずです。
一般に、Linux 上の共有ライブラリは、次のバージョン規則に従う必要があります: libfoo.so.X.Y.Z
、ここで はX
メジャー番号、Y
と はZ
マイナー番号です。X
が増加すると、新しいバージョンは古いバージョンと互換性がなくなります。 増加は、Y
ABI に互換性のある変更が行われたことを意味します。 変更は、Z
バグが修正されたが、インターフェイスは変更されていないことを意味します。 実行可能バイナリには、使用する共有ライブラリへの参照が含まれますが、これらの参照にはメジャー番号のみが含まれます。実際に使用されるライブラリは、プログラムが実行されるマシン上のライブラリ シンボリック リンクによって決まります。例:
/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.25