JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
リンカーとライブラリ     Oracle Solaris 11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I リンカーおよび実行時リンカーの使用

1.  Oracle Solaris リンカーの紹介

2.  リンカー

3.  実行時リンカー

4.  共有オブジェクト

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

インタフェースの互換性

内部バージョン管理

バージョン定義の作成

ウィークバージョン定義の作成

関連のないインタフェースの定義

バージョン定義への結合

追加オブジェクトのバージョンの検査

バージョン結合の指定

追加バージョン定義への結合

バージョンの安定性

再配置可能オブジェクト

外部バージョン管理

バージョン管理ファイル名の管理

同じプロセス内の複数の外部バージョン管理ファイル

6.  動的ストリングトークンによる依存関係の確立

パート II クイックリファレンス

7.  リンカーのクイックリファレンス

8.  バージョン管理の手引き

パート III 詳細情報

9.  直接結合

10.  mapfile

11.  拡張性メカニズム

パート IV ELF アプリケーションバイナリインタフェース

12.  オブジェクトファイル形式

13.  プログラムの読み込みと動的リンク

14.  スレッド固有領域 (TLS)

パート V 付録

A.  リンカーとライブラリのアップデートおよび新機能

B.  System V Release 4 (バージョン 1) Mapfile

索引

第 5 章

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

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

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

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

この章では、動的実行可能プログラムと共有オブジェクトの実行時インタフェースを中心に説明します。これらの動的オブジェクト内での変更を記述して管理するために使用される手法は、一般的な用語で説明してあります。共有オブジェクトに適用される命名規則とバージョン管理シナリオの共通セットは、第 8 章バージョン管理の手引きに示してあります。

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

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

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

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