コンテンツにスキップ

Executable and Linkable Format

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Alexbot (会話 | 投稿記録) による 2009年9月15日 (火) 14:09個人設定で未設定ならUTC)時点の版 (ロボットによる: 細部の編集)であり、現在の版とは大きく異なる場合があります。

ELF
拡張子 なし、.o.so.elf.app
開発者 UNIX Systems Laboratories
種別 バイナリ実行可能オブジェクト共有ライブラリコアダンプ
テンプレートを表示

Executable and Linkable Format(ELF)とは、コンパイラが生成するオブジェクト、および、ライブラリとリンクされた実行ファイルファイルフォーマットである。a.outフォーマットCOFFの後継として広く採用されている。メモリ上で連続していないファイルや、ロードされる場所と実行される場所が違う箇所を含む場合にも対応が可能な柔軟な設計となっている。

System Vにおいて採用され、GNUツールチェーンでサポートされていることもあり今ではBSD派生OSや、LinuxをはじめとするフリーなOSにおける実行ファイルフォーマットそして、ゲーム機等を含む組み込み機器開発に於いても好んで使われている。

ELFには以下の3種類のヘッダがある。

ELFファイルの構造
ELFヘッダ
ファイルの先頭に存在し、ELF識別子、アーキテクチャ情報および、他の2つのヘッダへの情報を持つ。
プログラムヘッダ
ファイル上のどの部分(セグメント)がどのような属性で何処に読み込まれるかを保持するヘッダであり、ファイルローダによって扱われる。ELFヘッダに続いて実行時ディスクから何らかの形で読み込まれるセグメントの数だけ存在する。
セクションヘッダ
オブジェクトファイルの論理的な構造を記述する部分で、ヘッダと名前がついているが実際にはファイルの最後あたりに置かれていることが多い。ここはリンカデバッガによって参照されることがある。セクションはセクション名があるが、それは特殊なセクションに置かれ何番目の文字列かという指し方を行う。このことによって、エントリそのものは固定長にしつつセクション名の長さ制限を取り払っている。

共有ライブラリにも対応しており、然るべき属性のセグメント内にある、Procedure Location Tableや、Global Offset Tableを利用して、間接的に参照することになる。

デバッグ情報のフォーマットは定義されていないが、ELF(妖精)をもじったDebug With Arbitary Record Format略してDWARF(小人)と呼ばれる形式のフォーマットがよく使われる。

任天堂ハードにおけるELFファイル

Wii及びニンテンドーゲームキューブのソフトには、ELFファイルが存在する。また、WiiIOSにもELFファイルは存在する。

WiiのHomebrewにもELFが使われており、DOLファイルに次いで多く使われている。詳しくは、Gamecube Executableを参照。

関連項目