リンカーとライブラリ

概要

ELF オブジェクトでは、大域シンボルは他のオブジェクトから結合できます。これらの大域シンボルのいくつかは、オブジェクトの「公開インタフェース」を提供するものであると言うことができます。それ以外のシンボルは、オブジェクトの内部実装の一部であり、外部使用を目的としていません。オブジェクトのインタフェースは、ソフトウェアのリリースごとに変更されることがあるので、この変更を識別する方法が必要です。

また、ソフトウェアリリースごとのオブジェクトの内部実装の変更を識別する方法も必要とされます。

インタフェースと実装状態の識別情報はいずれも、オブジェクト内にバージョン定義として記録できます (内部バージョンアップの詳しい説明については、「概要」を参照)。

内部バージョンアップは、共有オブジェクトで最も使用されます。これは、変更を記録して、実行中にインタフェースの妥当性検査 (「バージョン定義への結合」を参照) を行えるようにし、さらにアプリケーションによる選択的結合 (「バージョン結合の指定」を参照) を可能にするからです。この章では、共有オブジェクトを例として使用します。

以後の節では、共有オブジェクトに適用されるリンカーが提供する内部バージョンアップ機構の簡単な概要を示します。これらの例では、共有オブジェクトの初期構築からいくつかの一般的な更新の筋書きを通して、共有オブジェクトをバージョンアップするための規約と機構を示しています。