Linuxでの共有オブジェクトは「so番号」を使用していること、つまり、共有オブジェクトの異なるバージョンには異なる拡張子が与えられていることを知っています。たとえば:
example.so.1
example.so.2
(Windowsの「DLL Hell」とは対照的に)2つのバージョンのライブラリがシステム上に存在できるように、2つの異なるファイルを作成するという考え方だと理解しています。これが実際にどのように機能するか知りたいですか?多くの場合、それexample.so
は実際example.so.2
に.2
は最新バージョンがどこにあるのかを示すシンボリックリンクであることがわかります。それでは、古いバージョンに依存するアプリケーションはどのようexample.so
に正しく識別しますか?使用しなければならない番号に関する規則はありますか?または、これは単なる慣習ですか?ソフトウェアバイナリがシステム間で転送されるWindowsとは異なり、システムに新しいバージョンの共有オブジェクトがある場合、ソースからコンパイルするときに古いバージョンに自動的にリンクされますか?
これは関連していると思われますldconfig
が、どうすればよいかわかりません。