リンカーとライブラリ

はじめに

SolarisTM オペレーティングシステム (Solaris OS) では、アプリケーション開発者はリンカー ld(1) を使用してアプリケーションやライブラリを構築し、実行時リンカー ld.so.1(1) を使用してこれらのオブジェクトを実行します。このマニュアルは、Solaris OS リンカーの使用に関係する概念をより十分に理解することを望むエンジニアを対象にしています。


注 –

Solaris のこのリリースでは、SPARC® および x86 系列のプロセッサアーキテクチャー (UltraSPARC ®、SPARC64、AMD64、Pentium、および Xeon EM64T) を使用するシステムをサポートします。サポートされるシステムについては、Solaris OS: Hardware Compatibility List (http://www.sun.com/bigadmin/hcl) を参照してください。本書では、プラットフォームにより実装が異なる場合は、それを特記します。

本書の x86 に関連する用語については、以下を参照してください。

サポートされるシステムについては、Solaris OS: Hardware Compatibility List を参照してください。


お読みになる前に

このマニュアルでは、Solaris OS リンカーおよび実行時リンカーの操作について説明しています。動的実行可能ファイルと共有オブジェクトの生成および使用方法に関しては、動的実行環境において重要であるため、特に重点を置いて説明しています。

対象読者

このマニュアルは、次のような、Solaris OS リンカーに興味を持つ、意欲的な初心者から上級ユーザーまでのプログラマを対象としています。

ほとんどのプログラマは、このマニュアルの最初から最後までを通読する必要はありません。

内容の紹介

第 1 章Solaris OS リンカーの紹介では、Solaris OS でのリンク処理の概要を紹介します。この章は、すべてのプログラマを対象としています。

第 2 章リンカーでは、リンカーの機能について説明します。この章は、すべてのプログラマを対象としています。

第 3 章実行時リンカーでは、実行環境と、プログラム制御によるコードおよびデータの実行時の結び付きについて記載しています。この章は、すべてのプログラマを対象としています。

第 4 章共有オブジェクトでは、共有オブジェクトの定義について記載し、そのメカニズムと作成方法および使用方法について説明しています。この章は、すべてのプログラマを対象としています。

第 5 章アプリケーションバイナリインタフェースとバージョン管理では、動的オブジェクトによって提供されたインタフェースの展開の管理方法について記載しています。この章は、すべてのプログラマを対象としています。

第 6 章サポートインタフェースでは、リンカーと実行時リンカーの処理を監視し、場合によっては修正する、インタフェースについて記載しています。この章は、上級プログラマを対象としています。

第 7 章オブジェクトファイル形式は、ELF ファイル用のリファレンスです。この章は、上級プログラマを対象としています。

第 8 章スレッド固有領域 (TLS)では、スレッド固有領域について説明しています。この章は、上級プログラマを対象としています。

第 9 章mapfile のオプションでは、出力ファイルのレイアウトを指定する、リンカーへの mapfile 指令について説明します。この章は、上級プログラマを対象としています。

付録 A リンカーのクイックリファレンスでは、もっとも一般に使用されるリンカーオプションの概要を記載しています。この付録は、すべてのプログラマを対象としています。

付録 B バージョン管理の手引きは、共有オブジェクトのバージョン管理のための命名規約と手引きを記載しています。この付録は、すべてのプログラマを対象としています。

付録 C 動的ストリングトークンによる依存関係の確立では、予約動的ストリングトークンを使用して、動的依存関係を定義する方法の例を記載しています。この付録は、すべてのプログラマを対象としています。

付録 D リンカーとライブラリのアップデートおよび新機能では、リンカーに追加された新機能と更新の概要をリリースごとに記載しています。

このマニュアルを通して、すべてのコマンド行の例は、sh(1) の構文を使用しています。すべてのプログラム例は、C 言語で記述されています。

マニュアル、サポート、およびトレーニング

Sun の Web サイトでは、次のサービスに関する情報も提供しています。

表記上の規則

このマニュアルでは、次のような字体や記号を特別な意味を持つものとして使用します。

表 P–1 表記上の規則

字体または記号 

意味 

例 

AaBbCc123

コマンド名、ファイル名、ディレクトリ名、画面上のコンピュータ出力、コード例を示します。 

.login ファイルを編集します。

ls -a を使用してすべてのファイルを表示します。

system%

AaBbCc123

ユーザーが入力する文字を、画面上のコンピュータ出力と区別して示します。 

system% su

password:

AaBbCc123

変数を示します。実際に使用する特定の名前または値で置き換えます。 

ファイルを削除するには、rm filename と入力します。

『 』 

参照する書名を示します。 

『コードマネージャ・ユーザーズガイド』を参照してください。 

「 」 

参照する章、節、ボタンやメニュー名、強調する単語を示します。 

第 5 章「衝突の回避」を参照してください。 

この操作ができるのは、「スーパーユーザー」だけです。 

枠で囲まれたコード例で、テキストがページ行幅を超える場合に、継続を示します。 

 


sun% grep `^#define \

  XV_VERSION_STRING'

コード例は次のように表示されます。

[ ] は省略可能な項目を示します。上記の例は、filename は省略してもよいことを示しています。

| は区切り文字 (セパレータ) です。この文字で分割されている引数のうち 1 つだけを指定します。

キーボードのキー名は英文で、頭文字を大文字で示します (例: Shift キーを押します)。ただし、キーボードによっては Enter キーが Return キーの動作をします。

ダッシュ (-) は 2 つのキーを同時に押すことを示します。たとえば、Ctrl-DControl キーを押したまま D キーを押すことを意味します。

一般規則