リンカーとライブラリ

関連情報

動的リンク

動的リンクとは、通常、実行可能プロセスを生成する際に、動的実行可能ファイルと共有オブジェクトの実行時リンクとともに、これらのオブジェクトを生成するリンク編集プロセスの一部分を受け入れる場合に使用する用語です。動的リンクを使用すると、実行時にアプリケーションを共有オブジェクトへ結合できるようにすることによって、共有オブジェクトが提供するコードを複数のアプリケーションで使用できます。

標準ライブラリのサービスからアプリケーションを切り離すことにより、動的リンクも、アプリケーションの移植性および拡張性を向上させることができます。サービスの「インタフェース」とその「実現」を切り離すことにより、システムが、アプリケーションの安定性を維持しながら展開することが可能になります。これは、「アプリケーションのバイナリインタフェース」(ABI) を提供する場合に、非常に重要な要素になります。動的リンクは、Solaris アプリケーションのコンパイルメソッドよりも優先されます。

アプリケーションのバイナリインタフェース

システムとアプリケーションコンポーネントの非同期展開を可能にするには、これらの装置間のバイナリインタフェースを定義します。Solaris リンカーは、これらのインタフェース上で稼動し、実行できるようにアプリケーションを組み合わせます。Solaris リンカーが処理するコンポーネントにはすべてバイナリインタフェースがありますが、このようなインタフェースファミリーの 1 つで、特にアプリケーションライターに有用なものとして、「System V アプリケーションバイナリインタフェース」があります。

「System V アプリケーションのバイナリインタフェース」、または ABI は、コンパイルされたアプリケーションプログラム用にシステムインタフェースを定義します。その目的は、標準バイナリインタフェースを 「System V インタフェース定義、第 3 版」を実現するシステム上のアプリケーションプログラム用に文書化することです。Solaris では、ABI 準拠アプリケーションを生成し、実行できます。SPARC システムでは、ABI は「SPARC Compliance Definition」(SCD) サブセットとして組み込まれています。

このあとの章で説明するトピックの多くは、ABI の影響を受けています。詳細については、該当する ABI マニュアルを参照してください。

サポートするツール

上記のオブジェクトとともに、サポートツールとライブラリもいくつか揃っています。これらのツールを使用すると、これらのオブジェクトとリンクプロセスの分析や検査が行えます。これらのツールには、elfdump(1)nm(1)dump(1)ldd(1)pvs(1)elf(3E)、およびリンカーデバッギングのサポートライブラリがあります。これらのツールについては、例を用いて詳しく説明します。