本サイト全体に関わるJavaScriptの機能の概要
日本−日本語
≫
お問い合わせ
検索:
詳細検索オプション
マニュアル
docs.hp.com - 日本語
日本HP内
HP-UX リンカー & ライブラリー ユーザーズ・ガイド: HP 9000 コンピュータ
≫
テクニカル ドキュメント
PDF版
≫
フィードバック
≫ 目次
≫
用語集
≫
索引
HP 部品番号: B2355-90732
第 1 版
2001 年 3 月
ご注意
目次
出版履歴
納入後の保証について
まえがき
1 最新リリースの新規機能
ハードウェア互換性に関する PA-RISC の変更事項
PA-RISC 2.0 の互換性
PA-RISC アーキテクチャとそのシステム・モデル
64 ビット・モードのリンカ・ツールセットと事実上の業界標準との互換性
64 ビット・モードの ELF オブジェクト・ファイル・フォーマット
64 ビット・モードのリンクの新機能
64 ビット・モードのリンカ・オプション
64 ビット・モードのリンカ定義シンボル
64 ビット・モードのリンク時の違い
64 ビット・モードの実行時の違い
今後のリリースでの変更事項
リンカとライブラリのオンライン・ヘルプ
2 プログラムのコンパイル時とリンク時の処理
HP-UX 上でのプログラムのコンパイル:例
コンパイラの「内部処理」
オブジェクト・ファイルとは
ローカル定義
グローバル定義
外部参照
コンパイラとリンカの相互作用
HP-UX 上でのプログラムのリンク
crt0.o 起動ファイル
a.out ファイル
ファイル・パーミッション
ライブラリとのリンク
ライブラリの命名規則
デフォルト・ライブラリ
デフォルトのライブラリ検索パス
リンク順
プログラムの実行
プログラムをロードする: exec
プログラムへのルーチンをバインドする
デフォルトの遅延バインディング
リンカのスレッド・セーフ機能
3 リンカのタスク
コンパイラによるリンク
-WI, -L を使用してデフォルトのライブラリ検索パスを変更する
-v を使用して冗長出力を取得する
-Wl を使用してコンパイラ・コマンドからリンカ・オプションを渡す
-o を使用して出力ファイル名を変更する
-l を使用してライブラリを指定する
-c を使用してリンク編集フェーズを抑止する
リンカ・コマンドの使用
32 ビットの crt0.o 起動ファイルとリンクする
-L と LPATH を使用してデフォルトのライブラリ検索パスを変更する
-B を使用してデフォルトの共有ライブラリのバインディングを変更する
-B symbolic を使用して共有ライブラリのパフォーマンスを改善する
-a を使用してアーカイブ・ライブラリまたは共有ライブラリを選択する
-A および-R を使用して動的にリンクする
+e を使用してシンボルをエクスポートする
+ee を使用してシンボルをエクスポートする
-E を使用して main からシンボルをエクスポートする
-h を使用してシンボルを非表示にする
+b を使用してリンクした後にライブラリを移動する
+s と SHLIB_PATH を使用してリンク後にライブラリを移動する
-c を使用してファイル内のリンカ・オプションを渡す
LDOPTS を使用してリンカ・オプションを渡す
-l と l:を使用してライブラリを指定する
-s と-x を使用して出力ファイルからシンボル・テーブル情報を削除する
64 ビット・モードのリンカ・オプションの使用
64 ビット・モードのリンカを +compat または +std と併用する
-dynamic を使用して共有ライブラリをリンクする
-noshared を使用してアーカイブ・ライブラリをリンクする
+[no]forceload を使用してアーカイブ・ライブラリのロード動作を制御する
+[no]allowunsats を使用して未解決シンボルにフラグを設定する
+hideallsymbols を使用してシンボルをエクスポートに対して非表示にする
-k と +nodefaultmap を使用してマップファイルを変更する
+noenvvar を使用して動的パス環境変数を無視する
+std を使用して 64 ビット・モードでリンクする
+compat を使用して 32 ビット・モード方式でリンクする
+stripwind を使用してアンワインド・テーブルからの出力を制御する
+vtype を使用して冗長出力を選択する
64 ビットの crt0.o 起動ファイルを使用してリンクする
リンカの互換性に関する注意事項
未解決シンボルを使用してアーカイブ・ライブラリをリンクする
4 リンカ・ツール
chatr(1) を使用してプログラムの属性を変更する
32 ビットのプログラム属性に chatr を使用する
64 ビットのプログラム属性に chatr を使用する
nm(1) を使用してオブジェクト・ファイル内のシンボルを表示する
elfdump(1) を使用してオブジェクト・ファイルの内容を表示する
ldd(1) を使用してライブラリの依存関係を表示する
size(1) を使用してオブジェクト・ファイルの要素のサイズを表示する
strip(1) を使用して記憶スペースを削減する
fastbind(1) を使用してプログラムの起動時間を短縮する
lorder(1) を使用してオブジェクト・ライブラリの順序関係を検索する
5 ライブラリの作成と使用
共有ライブラリとアーカイブ・ライブラリの概要
アーカイブ・ライブラリとは
例
共有ライブラリとは
ダイナミック・ローダー dld.sl
実行時にライブラリを検索させる場合のデフォルト動作
動的ライブラリ検索使用時の注意事項
共有ライブラリとアーカイブ・ライブラリを比較するプログラムの例
デバッガ、プロファイラ、および静的解析による共有ライブラリ
gprof(1) を使用して共有ライブラリをプロファイルする
アーカイブ・ライブラリの作成
アーカイブ・ライブラリ作成の概要
アーカイブ・ファイルの内容
アーカイブ・ライブラリの作成例
オブジェクト・モジュールを置換、追加、および削除する
ar(1) コマンドのキーの概要
crt0.o
アーカイブ・ライブラリの位置
共有ライブラリの作成
位置独立コード (PIC) を作成する
ld を使用して共有ライブラリを作成する
共有ライブラリの依存関係
共有ライブラリを更新する
共有ライブラリの位置
共有ライブラリのパフォーマンスを改善する
共有ライブラリによるバージョン管理
共有ライブラリのバージョン化を使用する場合
ライブラリ・モジュールの旧バージョンを保守する
ライブラリ・レベルのバージョン化
ライブラリ内でバージョン化する
アーカイブ・ライブラリから共有ライブラリへの切り替え
ライブラリのパス名
文書化されていないリンカ動作に依存する
絶対仮想アドレス
スタックを使用する
バージョン管理
デバッガの制限事項
共有ライブラリに対して chroot コマンドを使用する
プロファイリングの制限事項
HP-UX ライブラリの要約
共有ライブラリとアーカイブ・ライブラリの混用時の注意事項
例: 未解決シンボル
例 2: shl_load(3X) の使用
例 3: 非表示の定義
共有ライブラリおよびアーカイブ・ライブラリ混用時の要約
64 ビット・モードでの共有ライブラリの使用
内部名の処理
共有ライブラリの動的パス検索
共有ライブラリのシンボル・バインディング方式
混合モードの共有ライブラリ
64 ビット・モードのライブラリの例
6 共有ライブラリ管理ルーチン
共有ライブラリ管理ルーチンの概要
shl_load ルーチンの概要
dlopen ルーチンの概要
関連ファイルおよびコマンド
共有ライブラリのヘッダ・ファイル
cc および ld オプションを指定の共有ライブラリの使用
共有ライブラリのイニシャライザ
イニシャライザのスタイル
Init/Fini イニシャライザを使用する
HP-UX 10.X スタイルのイニシャライザを使用する
shl_load 共有ライブラリ管理ルーチン
shl_load および cxxshl_load ルーチン
shl_findsym ルーチン
shl_get ルーチンと shl_get_r ルーチン
shl_gethandle ルーチンと shl_gethandle_r ルーチン
shl_definesym ルーチン
shl_getsymbols ルーチン
shl_unload ルーチンと cxxshl_unload ルーチン
dlopen 共有ライブラリ管理ルーチン
dlopen ルーチン
dlerror ルーチン
dlsym ルーチン
dlget ルーチン
dlmodinfo ルーチン
dlgetname ルーチン
dlclose ルーチン
ダイナミック・ローダーの互換性に関する警告
サポートされない共有ライブラリ管理ルーチン
サポートされない共有ライブラリ管理フラグ
7 位置独立コード
再配置可能オブジェクト・コードとは
絶対オブジェクト・コードとは
位置独立コードとは
位置独立コードの生成
詳細情報
コンパイラおよびアセンブリ・コードに関する PIC の要件
長い呼び出し
長い分岐とスイッチ・テーブル
割り当て形 GOTO 文
リテラル参照
グローバル変数と静的変数の参照
プロシージャ・ラベル
8 パフォーマンスの改善方法
リンカの最適化
コンパイル行からリンカの最適化を実行する
他のオプションとの非互換性
+Oprocelim による未使用プロシージャの除去
TLB のヒット率を改善するオプション
プロファイル・ベースの最適化
PBO に関する一般情報
PBO の使用
PBO を使用する場合
PBO の使用法
実装 (+I/-I)
プロファイル化
プロファイル・データに基づいて最適化する (+P/-P)
PBO による最適化レベルを選択する
PBO を使用して共有ライブラリを最適化する
PBO を ld -r と併用する
PBO の制限条項と制限事項
9.0 の PBO との互換性
インクリメンタル・リンク
インクリメンタル・リンク・オプションを使用する
アーカイブ・ライブラリの処理
共有ライブラリの処理
パフォーマンス
注記
コンパイルされたオブジェクト・ファイルの再使用
グローバル・シンボル・テーブルによるパフォーマンスの改善
関数シンボルの別名化によるパフォーマンスの改善
fastbind を使用して共有ライブラリの起動時間を短縮する
fastbind の使用
fastbind ツールの呼び出し
リンカからの fastbind の呼び出し
最新の fastbind 情報かどうかを通知する方法
ファイルから fastbind 情報を削除する
fastbind を実行時にオフにする
詳細情報
A マップファイルの使用
-k オプション使用のマップファイルの制御
マップファイルの例 -k filename を使用する (+nodefaultmap オプションを指定しない場合)
-k filename と +nodefaultmap を使用してマップファイルを変更する
マップファイルの例 -k mapfile と +nodefaultmap の使用
単純マップファイル
HP-UX リリース 11.0 のデフォルトのマップファイル
マップファイル指令の構文の定義
マップファイルのセグメント宣言の定義
セグメント・フラグ
マップファイルのセグメント宣言の例
マップファイルのセクション・マッピング指令の定義
内部マップ構造
実行可能ファイル内のセグメントの位置
入力セクションをセグメントにマップする
ユーザー定義のマップファイル指令とデフォルトのマップファイル指令との相互作用
マップファイル・オプションのエラー・メッセージ
致命的なエラー
警告
用語集
索引
図目次
2-1
コンパイラの大まかな処理
2-2
コンパイラの「内部処理」
2-3
外部参照と sum_n の一致
3-1
-B symbolic を使用して共有ライブラリ内のシンボルを可視にする
3-2
共有ライブラリ内のシンボルを非表示にする
5-1
アーカイブ・ライブラリとリンクさせる
5-2
libc を共有する 2 つのプロセス
5-3
libc の専用コピーを使用する 2 つのプロセス
5-4
アーカイブ・ライブラリを作成する
5-5
タイトルなし (共有ライブラリへのファイル・システム・リンク)
5-6
タイトルなし (共有ライブラリへのファイル・システム・リンク)
5-7
タイトルなし (例: 未解決シンボル)
5-8
タイトルなし (例: 未解決シンボル)
5-9
タイトルなし (例: 未解決シンボル)
5-10
タイトルなし (例: 未解決シンボル)
5-11
タイトルなし (例: 未解決シンボル)
5-12
タイトルなし (問題)
5-13
タイトルなし (例 2: shl_load(3X) の使用)
5-14
タイトルなし (例 2: shl_load(3X) の使用)
5-15
タイトルなし (例 2: shl_load(3X) の使用)
5-16
タイトルなし (例 2: shl_load(3X) の使用)
5-17
タイトルなし (問題)
5-18
タイトルなし (問題)
5-19
タイトルなし (例 3: 非表示の定義)
5-20
タイトルなし (例 3: 非表示の定義)
5-21
タイトルなし (例 3: 非表示の定義)
5-22
タイトルなし (例 3: 非表示の定義)
5-23
タイトルなし (例 3: 非表示の定義)
5-24
タイトルなし (問題)
5-25
依存ライブラリの検索順
A-1
タイトルなし (入力セクションをセグメントにマップする)
表目次
2-1
32 ビット・モードのマジック・ナンバー・リンカ・オプション
例目次
3-1
動的リンク・ファイルの作成に使用された makefile
3-2
dynprog.c ― プログラムの動的リンクとロードの例
3-3
file1.c と file2.c のソース
3-4
dynload.c の include 指令
3-5
alloc_load_space 関数の C のソース
3-6
dyn_load 関数の C のソース
3-7
flush_cache 関数のアセンブリ言語のソース
4-1
32 ビット互換構文の場合:
4-2
64 ビット専用の構文の場合:
4-3
例
4-4
例
4-5
例
4-6
例
6-1
lib1.sl の C のソース (ファイル lib1.c)
6-2
lib2.sl の C のソース (ファイル lib2.c)
6-3
lib3.sl の C のソース (ファイル lib3.c)
6-4
これらのライブラリの生成に使用されたコマンド
6-5
a.out の実行による出力
6-6
libfoo.c の C のソース
6-7
testlib.c の C のソース
6-8
testlib の出力
6-9
_INITIALIZER の C のソース (ファイル init.c)
6-10
libunits.sl の C のソース
6-11
libtwo.c の C のソース
6-12
testlib2.c の C のソース
6-13
load_lib ― 共有ライブラリをロードする関数
6-14
共有ライブラリをロードし、そのルーチンを呼び出してデータにアクセスする
6-15
show_loaded_libs ― ライブラリ情報の表示
6-16
show_lib_info ― 共有ライブラリ情報の表示
6-17
show_symbols ― 共有ライブラリのシンボルの表示
6-18
show_all ― show_symbols によるすべてのシンボルの表示
8-1
例
印刷用画面へ
プライバシー
本サイト利用時の合意事項
© Hewlett-Packard Development Company, L.P.