ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
リンカーとライブラリ Oracle Solaris 10 8/11 Information Library (日本語) |
5. アプリケーションバイナリインタフェースとバージョン管理
既存の (バージョンアップされていない) 共有オブジェクトのバージョンアップ
ELF オブジェクトでは、大域シンボルはほかのオブジェクトから結合できます。これらの大域シンボルのいくつかは、オブジェクトの「公開インタフェース」の提供者として機能します。それ以外のシンボルは、オブジェクトの内部実装の一部であり、外部使用を目的としていません。オブジェクトのインタフェースは、ソフトウェアのリリースごとに変更されることがあります。そのため、変更点を識別することは重要です。
また、ソフトウェアリリースごとのオブジェクトの内部実装の変更を識別する方法も必要とされます。
インタフェースと実装状態の識別情報はいずれも、オブジェクト内に「バージョン定義」として記録できます。内部バージョン管理の詳細は、第 5 章アプリケーションバイナリインタフェースとバージョン管理を参照してください。
内部バージョン管理がもっとも利用されるのは、共有オブジェクトです。これは、変更を記録して、実行中にインタフェースの妥当性検査 (「バージョン定義への結合」を参照) を行えるようにし、さらにアプリケーションによる選択的結合 (「バージョン結合の指定」を参照) を可能にするからです。この付録では、共有オブジェクトを例として使用します。
以後の節では、共有オブジェクトに適用されるリンカーおよび実行時リンカーが提供する内部バージョンアップメカニズムの簡単な概要 (虎の巻) を示します。これらの例では、共有オブジェクトの初期構築からいくつかの一般的な更新の筋書きを通して、共有オブジェクトをバージョンアップするための規約とメカニズムを示しています。