Last Update 2019/06/11

実行ファイルを作成するために必須の技術
リンカ・ローダ実践開発テクニック

坂井 弘亮 著
B5変型判 304ページ
定価3,080円(税込)
JAN9784789838078
2010年9月1日発行
好評発売中!
リンカ・ローダ実践開発テクニック

 プログラミングにおいて,実行ファイルを作成するには「リンク」の作業が必要になります.さらにその実行形式を実際に動作させるためには「ロード」の作業が必要です.組み込みシステム開発やOS開発を行う場合,メモリ配置の検討や調整といった作業が必須です.さらにOSカーネルのソース・コードでは,リンカのテクニックを駆使した書き方をされる場合も多く,知識がなければ読み解けないような部分もあります.このためリンカとローダの知識が必要となってきます.
 本書では,リンクとロードについて,実践を交えながら説明します.コア・ダンプからの実行再開やリンカの自作など,興味深い実験も行います.
目次

第1章 リンカとローダの役割
 1.1 リンカとオブジェクト
 1.2 リンカの仕事
 1.3 実行形式とセクション
 1.4 シンボルと再配置
 1.5 ローダの仕事
 1.6 リンカ・スクリプト
 1.7 スタートアップ・ルーチン

第2章 ELF形式の解析
 2.1 オブジェクト・フォーマット
 2.2 ELF形式の構造
 2.3 使用するサンプル・プログラム
 2.4 ELFヘッダ
 2.5 ABI(Application Binary Interface)
 2.6 セクション名の意味
 2.7 セクション・ヘッダ
 2.8 プログラム・ヘッダ
 2.9 シンボル・テーブル
 2.10 再配置テーブル
 2.11 ELFファイルの解析例

第3章 ライブラリ・アーカイブの解析
 3.1 ライブラリ・アーカイブとは
 3.2 ライブラリ・アーカイブの構造
 3.3 アーカイブの解析例
 3.4 ライブラリ・アーカイブの解析
 3.5 ライブラリ・アーカイブのリンク
 コラム 二つのアーカイブ・フォーマットが混在した場合
 コラム checksymの使いかた

第4章 実験――リンカで遊んでみよう
 4.1 配列とポインタの違い
 4.2 const変数に書き込む
 4.3 グローバル変数をstaticにする
 4.4 シンボルの名前を変更する
 4.5 変数の隠ぺいを階層化する
 4.6 静的変数を再初期化する
 4.7 自動初期化を行う
 4.8 終了時に関数を呼び出す

第5章 リンカ・スクリプトの役割と動作
 5.1 リンカとローダの役割
 5.2 リンカ・スクリプトの役割

第6章 リンカ・スクリプトを使った実験
 6.1 標準のリンカ・スクリプト
 6.2 リンカ・スクリプトの実験

第7章 コマンド・ライン指定による動作の違いとリンカの利用法
 7.1 コマンド・ライン指定の違いによる動作の違い
 7.2 コマンド・ラインによる違いを実験で確かめる
 7.3 重複シンボル問題の解説と解決策
 7.4 リンカの利用の実例――バイナリ・データを挿入する
 コラム そのほかのリンカの利用方法

第8章 ローダの原理と簡易ローダの作成
 8.1 ローダの必要性
 8.2 ローダの概要
 8.3 簡易ローダの原理
 8.4 簡易ローダの作成
 8.5 サンプル・プログラム
 8.6 簡易ローダの実行

第9章 コア・ダンプの解析
 9.1 コア・ダンプとは何か
 9.2 コア・ダンプの詳細
 9.3 中断したプロセスの再開
 9.4 中断と再開の実験
 コラム setjmp()とlongjmp()

第10章 簡易リンカの作成
 10.1 オブジェクト・ファイルとリンカの概要
 10.2 シンボル解決の実際
 10.3 サンプル・プログラム
 10.4 リンカの作成

第11章 共有ライブラリの使い方
 11.1 仮想メモリ
 11.2 位置独立コード
 11.3 ライブラリの作成とインストール
 11.4 共有ライブラリの内部構造
 11.5 動的リンカ
 11.6 動的なライブラリのロード
 コラム 関数ラッパ