短いバージョンでは、ライブラリの soname を介してこれを行います。 http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html の第 3 章と、http://www.akkadia.org/drepper/dsohowto.pdf の第 3.3 ABI バージョニングをお読みください
Linux は次の戦略を使用します - あなた (システム管理者) は、次のように「特定の」共有ライブラリ ファイルからシンボリック リンクを提供します:
lrwxrwxrwx 1 root root 16 2011-09-22 14:36 libieee1284.so -> libieee1284.so.3
lrwxrwxrwx 1 root root 20 2011-09-22 14:36 libieee1284.so.3 -> libieee1284.so.3.2.2
-rw-r--r-- 1 root root 46576 2011-07-27 13:08 libieee1284.so.3.2.2
このようにして、開発者は -lieee1284 (任意のバージョンの ABI)、libieee1284.so.3、または特定のリリースとパッチ バージョン (3.2.2) のいずれかにリンクできます
これを処理する最善の方法は、バージョン管理を行う libtool を使用することです。
本質的に、バージョン情報はライブラリ自体にエンコードされているのではなく (または主に、私の頭からはわかりません)、ファイル名にエンコードされています。バージョン番号は通常 3 ドット形式で与えられ、メジャー番号は ABI の下位互換性が途切れるたびに大きくなり、ABI の上位互換性が途切れるたびにメジャー番号が増加し、ABI を変更しなかったパッチはマイナー番号になります。
qdot が指摘したように、lib ディレクトリ内のシンボリック リンクは重要なバージョン管理を提供します。現在インストールされている開発ヘッダーのバージョン番号のないシンボリック リンク (libfoo.so)、インストールされている各メジャー バージョンのメジャー番号のシンボリック リンク (libfoo.so.1)、および完全なバージョン番号の実際のファイルがあります。通常、複数のメジャー バージョンが共存できるように、プログラムは実行時に libfoo.so.1 を使用するようにリンクされます。