Go to main content
Oracle® Solaris 11.3 リンカーとライブラリガイド

印刷ビューの終了

更新: 2015 年 10 月
 
 
第 10 章

インタフェースおよびバージョン管理

リンカーおよび実行時リンカーで処理される ELF オブジェクトには、ほかのオブジェクトを結合できる多数の大域シンボルが用意されています。これらのシンボルは、オブジェクトのアプリケーションバイナリインタフェース (ABI) を記述するものです。オブジェクトの展開中、このインタフェースは、大域シンボルの追加または削除が原因で変更されることがあります。また、オブジェクト展開には、内部実装の変更が関与することがあります。

バージョン管理とは、インタフェースや実装状態の変更を示すためにオブジェクトに適用できるいくつかの手法のことをいいます。これらの手法を使用すると、下位互換性を保ちながらオブジェクト制御による展開を行うことができます。

この章では、オブジェクトの ABI の定義方法について説明します。また、この ABI インタフェースに対する変更によって下位互換性が受ける影響についても説明します。これらの概念については、インタフェースと実装の変更を新しいリリースのオブジェクトにどのように組み込むかを示すモデルを使用して説明します。

この章では、動的実行可能プログラムと共有オブジェクトの実行時インタフェースを中心に説明します。これらの動的オブジェクト内での変更を記述して管理するために使用される手法は、一般的な用語で説明してあります。

動的オブジェクトの開発者は、インタフェース変更の結果に注意し、特に以前のオブジェクトとの下位互換性を維持するという点で、これらの変更の管理方法を理解する必要があります。

動的オブジェクトによって使用可能になった大域シンボルは、オブジェクトの公開インタフェースを表します。リンク編集後にオブジェクトに残る大域シンボルの数は、公開したいと望む数を超える場合がよくあります。これらの大域シンボルは、そのオブジェクトの構築に使用された再配置可能オブジェクトの間で必要なシンボル状態から引き出されます。これらの大域シンボルは、オブジェクト内の非公開インタフェースを表します。

オブジェクトの ABI を定義するには、まず、オブジェクトから公開して使用できるようにする大域シンボルを決定するべきです。これらの公開シンボルは、リンカーの –M オプションと関連の mapfile を最終リンク編集の一部として使用することによって確立できます。この手法は、シンボル範囲の縮小に説明されています。この公開インタフェースは、1 つまたは複数のバージョン定義を作成中のオブジェクト内に確立します。これらの定義は、オブジェクトの進化に合わせて新しいインタフェースを追加する際の基礎となります。

次のセクションは、この初期公開インタフェースに基づいて説明されています。最初に、インタフェースへの各種の変更をどのように分類すると、これらのインタフェースを適切に管理できるかを理解しておくべきです。