This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.
Contributed by 浅見 賢 <asami@FreeBSD.org>, Peter Wemm <peter@FreeBSD.org>, and David O'Brien <obrien@FreeBSD.org>. 9 December 1996.
もしあなたが共有ライブラリをサポートする機能を port に追加した り, 共有ライブラリをサポートしていない他のソフトウェアに追加する 場合には, 共有ライブラリのバージョン番号を次の規則にしたがって つけてください. 一般的には, この規則は, ソフトウェアのリリースバージョンとは 全く関係ありません.
共有ライブラリを作成する三つの重要な規則は 次の通りです:
1.0 から始める
過去のバージョンに互換性のある変更の場合は, マイナー番号を増やす(ELF システムでは マイナー番号が無視されることに注意して下さい)
互換性のない変更の場合は, メジャー番号を増やす
例えば, 機能追加とバグ吸収の場合は, マイナー番号を増やします. 機能削除, 関数呼び出しのシンタックスなどが変更された場合は, 強制的にメジャー番号を変更します.
メジャー.マイナーー (x,y) の形式のバージョン番号を使用します. FreeBSD における a.out 形式のダイナミックリンカは, x.y.z という形式のバージョン番号 は扱えません. この場合, y の後のバージョン番号 (つまり三つ目の数字)は, どのライブラリがリンクされているかを決めるために, 共有ライブラ リ番号を比較する際に, すべて無視されます. ``小さな''リビジョンだけが 異なる二つの共有ライブラリが指定 されると, ld.so は, リビジョンの大きい方の共有ライブラリを リンクします. すなわち, もしあなたが libfoo.so.3.3.3 をリンク していたとすると, リンカは頭の 3.3 という部分だけを認識し, libfoo.so.3 ではじまり その後に 3 以上の数字が続くもののうち, 最も大きい番号 の付いているライブラリをリンクします.
Note: ld.so はいつも最も大きい ``マイナー'' リビジョンのものを使うことに 注意してください. 例えば, プログラムがはじめ libc.so.2.0 を リンクしていたとしても, libc.so.2.0 よりも libc.so.2.2 を優先して使用します.
さらに, ELF ダイナミックリンカはマイナーバージョンを全く扱いません. しかし, 作成した Makefile がそのようなシステムでも 「きちんと動作できる」ように, メジャー番号およびマイナー番号を 指定する必要があります.
移植されていないライブラリに対しては, 共有ライブラリのバージョン番号はリリースごとに一度だけ変更し, また, 主要な共有ライブラリのバージョン番号は, OS の主リリースごとに 一度だけ変更する, というのが私たちのポリシーです. つまり, X.0 は (X+1).0 になります. あなたがシステムライブラリのバージョン番号を上げた場合は, Makefile の commit ログを確認してください. 結果としてそのリリースには, 共有ライブラリのバージョン番号が アップデートされた Makefile に入るので, 最初にその変更を 確かめるのがソースツリー管理者 ("committer") の責務です. その後のどんな変更も, そのリリースには入りません.