Entry

最近買った本 - 『リンカ・ローダ実践開発テクニック』

2010年11月21日

今月の頭に買ってぼちぼち読んでいます。

本書は,リンカとローダついて書かれた本。リンカというのは,C/C++ やアセンブリのソースファイルをコンパイルした後にできるオブジェクトファイルを実行形式にまとめ上げるプログラムのことで,ローダというのは,実行形式のプログラムをメモリ上に展開して実行可能な状態にするためのプログラムです。これらは,C/C++ を日々叩いている向きでもあまりなじみのない分野だと思います。OS や組み込みでファームウェアの設計/開発に携わっている方には,おなじみの分野です。

ユーザ数が少ない(少なくはないんだけれども意識して使っている人はあまりいない)ということは,専門書籍も必然的に少なくなるわけで,リンカ・ローダに関する書籍はほとんどないのが実情です。これまでリンカとローダを扱った書籍としては,『Linkers & Loaders』が唯一だったといっていいと思うんですけれど,やっとまともに解説してくれる書籍が出てくれました。タイトルを見て即買いしてしまった。

Linkers & Loaders
Linkers & Loaders
posted with amazlet at 10.11.21
John R. Levine
オーム社
売り上げランキング: 236557

ちなみに『12ステップで作る組込みOS自作入門』でおなじみ,坂井弘亮氏の著書です。

12ステップで作る組込みOS自作入門
坂井 弘亮
カットシステム
売り上げランキング: 13954

『12ステップ…』でもリンカとローダを取り上げているんですけれど,焦点がハードウェアに置かれていて,ソフトウェアからのアプローチは少なかったのでした。OS を作るのが目的だったので,当たり前なんですが。

で,本書の話に戻ると,まず注意しておかなくてはいけないのが,扱っているオブジェクトファイルのフォーマットです。本書が扱うオブジェクトファイルは,基本的に ELF/ELF32 なので,標準的な Windows のオブジェクトファイル形式,例えば PE(Portable Excutable)のようなファイルについて説明はありません。また,ELF なら Linux を使っているのかと思いきや,本書の環境は FreeBSD となっています。ニッチだなー。

あたしゃ割と昔から FreeBSD を開発/実験環境に使っているので,ここら辺に問題は全くないんですけれど,大部分の人はまずこの点で引いてしまうんじゃないかと思います。ただ,FreeBSD は一頃前に実行形式を a.out 形式から ELF 形式に大転換した経緯があるので,変遷を追っかけることができる OS としてはいい選択なんじゃないかと思います。FreeBSD は Linux と比べてマシンスペックの要件も比較的ゆるいし,簡単にインストールもできるので,UN*X や Linux をそこそこ使っている向きならあまり抵抗はないはずです。

開発環境は FreeBSD 4.10 と gcc 2.95.4,binutils 2.12.1 と,今となってはかなりレトロな環境ですけれど,FreeBSD 8.1 が動いているうちの環境でも読み進められているので,バージョンは取り立てて問題はないと思います。FreeBSD-4.x 系が好きなユーザって割といるんですよね。

本書の構成を説明しておくと,最初にリンカとローダの仕事をざっくりと説明した後,ELF のオブジェクトファイルや ar コマンドで作れるアーカイブファイルの解析を行います。「実践」と名が付いているだけあって,ツールや自作のプログラムを駆使して,gcc が吐き出すオブジェクトをゴリゴリと解析しています。この内容は非常に濃い。ここまでで全体の1/4なんですけれど,おそらく,この3章でおなかいっぱいになれるんじゃないかと思います。

次に,さらに実践は度を増して,リンカを使った実験に移ります。リンカがやっている作業は,基本的にシンボルの解決をすることなんですけれど,C/C++ では表現できないようなオブジェクトをゴリゴリと作って実行している。これも非常に濃い。濃すぎる。これが終わるとリンカの締めくくりとして,リンカスクリプトのいぢりかたが説明されます。

さらに説明はローダに移る。ここでもローダの実験をした後,今度は簡易ローダを自分で作って動かしてみたりしています。コアダンプの解析方法が説明された後,簡易リンカも作って,最後,共有ライブラリ(shared object)の構造と動的リンクを説明して終わります。

あたしがこれまで読んできた本で,ここまで詳しくリンカとローダを説明したものは読んだことがありません。本書をじっくり読みつつ実践(実験)を重ねれば,UN*X のオブジェクト周りはほとんど網羅できると言っていいんじゃないかと思います。これだけの内容で,3000円を切る価格。バイナリアン必携です。おすすめ。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN