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

ドキュメントの情報

はじめに

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

1.  Oracle Solaris リンカーの紹介

リンク編集

静的実行可能ファイル

実行時リンク

関連情報

動的リンク

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

32 ビットおよび 64 ビット環境

環境変数

サポートするツール

2.  リンカー

3.  実行時リンカー

4.  共有オブジェクト

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

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

パート III 詳細情報

6.  直接結合

7.  システムのパフォーマンスを最適化するオブジェクトの構築

8.  mapfile

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

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

11.  拡張性メカニズム

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

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

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

14.  スレッド固有ストレージ (TLS)

パート V 付録

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

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

索引

ドキュメントの品質向上のためのご意見をください
簡潔すぎた
読みづらかった、または難し過ぎた
重要な情報が欠けていた
内容が間違っていた
翻訳版が必要
その他
Your rating has been updated
貴重なご意見を有り難うございました!

あなたの貴重なご意見はより良いドキュメント作成の手助けとなります 内容の品質向上と追加コメントのためのアンケートに参加されますか?

関連情報

動的リンク

動的リンクという言葉は、しばしば、いくつかのリンク概念を含めて使用されます。動的リンクは、リンカープロセスの動的実行可能ファイルおよび共有オブジェクトを生成する部分を指します。動的リンクは、実行可能プロセスを生成するこれらのオブジェクトの実行時リンクも指します。動的リンクを使用すると、実行時にアプリケーションを共有オブジェクトへ結合することによって、共有オブジェクトが提供するコードを複数のアプリケーションで使用できます。

標準ライブラリのサービスからアプリケーションを切り離すことにより、動的リンクも、アプリケーションの移植性および拡張性を向上させることができます。サービスのインタフェースと実装が独立しているため、アプリケーションの安定性を維持しながら、システムを更新することができます。動的リンクは、ABI (アプリケーションバイナリインタフェース) を利用するときに必要不可欠な要素で、Oracle Solaris アプリケーションに適したコンパイル方式です。

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

システムコンポーネントとアプリケーションコンポーネントの間に定義されたバイナリインタフェースを利用すると、これらのコンポーネントを非同期的に更新できます。Oracle Solaris リンカーと実行時リンカーはこれらのインタフェース上で動作して、実行用にアプリケーションをアセンブルします。Oracle Solaris リンカーと実行時リンカーによって処理されるすべてのコンポーネントにはバイナリインタフェースがありますが、Oracle Solaris システムが提供するバイナリインタフェースを総称して、「Oracle Solaris ABI」と言います。

Oracle Solaris ABI は、「System V アプリケーションバイナリインタフェース」によって始まった ABI の成果の技術上の子孫です。この成果は、SPARC International, Inc. によって行われた SPARC プロセッサ向けの追加により発展し、「SPARC Compliance Definition (SCD)」と呼ばれます。

32 ビットおよび 64 ビット環境

リンカーは 32 ビットアプリケーションおよび 64 ビットアプリケーションとして提供されています。各リンカーは 32 ビットオブジェクトおよび 64 ビットオブジェクトで動作可能です。64 ビット環境を実行するシステムでは、両方のバージョンのリンカーを実行できます。32 ビット環境を実行するシステムでは、32 ビットバージョンのリンカーのみを実行できます。

実行時リンカーは 32 ビットオブジェクトおよび 64 ビットオブジェクトとして提供されています。32 ビットオブジェクトは 32 ビットプロセスを実行するために使用され、64 ビットオブジェクトは 64 ビットプロセスを実行するために使用されます。

32 ビットオブジェクト上および 64 ビットオブジェクト上のリンカーと実行時リンカーの操作に違いはありません。このドキュメントでは、多くの場合、32 ビットオブジェクトでの操作の例を使用します。64 ビットの処理が 32 ビットの処理と異なる場合には説明します。

64 ビットアプリケーションについては、『Oracle Solaris 64-bit Developer’s Guide』を参照してください。

環境変数

リンカーおよび実行時リンカーは、たとえば LD_LIBRARY_PATH など、LD_ から始まる環境変数を多数サポートしています。これらの環境変数は、この汎用形式でも使用できますが、_32 または _64 を接尾辞として指定することもできます (LD_LIBRARY_PATH_64 など)。この接尾辞は、環境変数をそれぞれ 32 ビットまたは 64 ビットプロセス固有のものにします。またこの接尾辞は、接尾辞の付いていない汎用形式の環境変数が有効な場合でも、それをオーバーライドします。


注 - Oracle Solaris 10 よりも前のリリースでは、リンカーおよび実行時リンカーは値なしで指定された環境変数を無視していました。したがって、次の例では、汎用環境変数設定である /opt/lib が 32 ビットアプリケーション prog の依存関係の検索に使われていました。

$ LD_LIBRARY_PATH=/opt/lib  LD_LIBRARY_PATH_32=  prog

Oracle Solaris 10 リリース以降、接尾辞 _32 または _64 を持つ、値なしで指定された環境変数も処理されるようになりました。これらの環境変数は、関連する汎用環境変数設定を事実上取り消します。このため、前の例で、32 ビットアプリケーション prog の依存関係を検索するために、/opt/lib が使われることはありません。


このドキュメントでは、リンカーの環境変数を記述する場合は、接尾辞の付いていない汎用形式を使用します。サポートされているすべての環境変数は、ld(1) および ld.so.1(1) に定義されています。

サポートするツール

Oracle Solaris OS では、いくつかのサポートツールとライブラリも提供しています。これらのツールを使用すると、これらのオブジェクトとリンク処理の分析や検査が行えます。これらのツールには、elfdump(1)lari(1)nm(1)dump(1)ldd(1)pvs(1)elf(3ELF)、およびリンカーデバッグサポートライブラリが含まれます。これらのツールについては、例を使用して詳しく説明します。