ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
インストール
ブラウザよりも高速アクセス!
 

Executable and Linkable Format

索引 Executable and Linkable Format

Executable and Linkable Format (ELF) とは、コンパイラが生成するオブジェクト、および、ライブラリとリンクされた実行ファイルのファイルフォーマットである。a.outフォーマット、COFFの後継として広く採用されている。セクション数の制限が緩く、メモリ上で連続していないファイルや、ロードされる場所と実行される場所が違う箇所を含む場合にも対応が可能な柔軟な設計となっている。 System V が採用し、GNUツールチェーンがサポートしている。今ではBSD派生OSやLinuxをはじめとするフリーなOSにおける実行ファイルフォーマット、そして、ゲーム機等を含む組み込み機器開発にも数多く使われている。.

17 関係: A.outフォーマット実行ファイル位置独立コードバイナリライブラリリンケージエディタデバッガファイルフォーマットオブジェクトファイルコアダンプBSDCOFFDWARFGNUツールチェーンLinuxUNIX System VUNIX Systems Laboratories

A.outフォーマット

a.outフォーマットは、UNIXにおける最初の実行ファイルおよびリンク可能ファイルのファイルフォーマットである。名前は、コンパイラの出力するファイルのデフォルトの名前がa.out(アセンブラアウトプット)であることから名付けられた。Windows上のgccではa.outファイルの代わりにa.exeを生成する。.

新しい!!: Executable and Linkable FormatとA.outフォーマット · 続きを見る »

実行ファイル

実行ファイル(じっこうファイル、Executable、Executable file)とは、コンピュータがプログラムとして解釈実行できるファイルである。実行可能ファイル、実行形式ファイル、あるいは単に実行形式とも呼ばれる。 多くの場合、特定のCPUの機械語を格納したバイナリ形式である(この形式の実行ファイルを単に「バイナリ(ファイル)」と呼ぶこともある)。あるファイルが実行ファイルかどうかは、主に規約の問題である。オペレーティングシステムによっては実行ファイルであることを示すファイル名の規約が存在する(拡張子 ".bin" ".exe"など)。あるいはファイルのメタデータで実行ファイルかどうかを示す(例えばUNIX系オペレーティングシステムのファイルパーミッションビット)。 最近のアーキテクチャでは、実行ファイルにはプログラム自体に含まれない情報も格納される。例えば、実行に必要な環境についての情報、デバッグ情報、シンボル情報などである。 実行ファイルには特定のオペレーティングシステムのシステムコールを呼び出すコードが含まれることもある。つまり実行ファイルはプロセッサ固有であるだけでなくオペレーティングシステム固有でもある。 ソースファイルと実行ファイルの違いはあいまいである。というのもソースから実行形式への変換が暗黙のうちに行われることがあるためである。インタプリタのファイル(シェルスクリプトやバッチファイルを含む)は、厳密に言えばインタプリタプログラムが解釈する命令を与えるものである。.

新しい!!: Executable and Linkable Formatと実行ファイル · 続きを見る »

位置独立コード

位置独立コード(いちどくりつコード、英: 、PIC)または位置独立実行形式(いちどくりつじっこうけいしき、英: 、PIE)とは、主記憶装置内のどこに置かれても絶対アドレスに関わらず正しく実行できる機械語の列である。PICは主に共有ライブラリに使われ、各プログラムが(例えば他の共有ライブラリに)使われていない任意の別々のアドレスに同じ共有ライブラリをロードして使うことができる。PICはMMUのない古いコンピュータシステムでも使われていた。PICを使えば、MMUのないシステムであってもオペレーティングシステム (OS) が単一のアドレス空間内で複数のアプリケーションを共存させることができる。 位置独立コードはメモリ上の任意の位置にコピーでき、修正することなく実行できる。リロケータブルコードは、指定されたアドレスで実行可能にするためにリンケージエディタやローダが特別な処理を施すが、位置独立コードではそれが不要である。位置独立コードはソースコードにおける特別な意味論が必要で、コンパイラがそれをサポートしていなければならない。絶対アドレスを指定する分岐命令など、特定のメモリアドレスを参照する命令は、等価なプログラムカウンタ相対命令に置き換えなければならない。そのために命令数が増えることもあるので効率は低下するが、最近のプロセッサはその差が無視できる程度になるよう設計されている。.

新しい!!: Executable and Linkable Formatと位置独立コード · 続きを見る »

バイナリ

バイナリ (binary) とは二進法のことであるが、コンピュータが処理・記憶するために2進化されたファイルまたはその内部表現の形式(バイナリデータ)のことを指して用いることが多い。 コンピュータが扱うすべてのデータはバイナリデータ(バイトの並び)であり、プレーンテキスト(または単にテキスト)もバイナリデータの一種ではあるが、通常バイナリとテキストは対比して用いられる。テキストとはデータの内容すべてを人間が読んで理解できる (human-readable) もの、バイナリとはそうでないものを指す。human-readableに対する語はmachine-readableだが、これは(機械的に読むことが可能であるように)フォーマットが定められているもの、という意味である。バイナリフォーマットではエンディアンなどに互換性・移植性の上で注意が必要であり、それを避けてテキスト形式で記録することも少なくない(UNIX哲学も参照。なお浮動小数点数やループした構造の表現など、テキスト形式にも注意が必要な点は多い)。バイナリエディタを用いると、バイナリファイルを1バイトずつの(16進法での)数値の並びとして表示・編集を行うことができる。バイナリのファイルでも多くは部分的にテキストとして読み取れる箇所が存在するため、そういった箇所のみを抜き出すstringsというユーティリティもある。 バイナリファイルにはたとえば画像ファイルや音声ファイル、圧縮されたファイルなどがある。バイナリファイルの中にはファイルの先頭にメタ情報(ヘッダ)を持っているものがある。たとえばGIFファイルは複数の画像を持つことができ、ファイルの先頭でそれぞれの画像を区別する情報が記述されている。そのようなメタ情報を持たないファイルはフラットバイナリファイルと呼ばれる。コンピュータプログラム関係では、テキストであるソースコードとの対比からコンパイルされたコード(オブジェクトファイルや実行ファイルなど。またそのような機械語(ネイティブバイナリ)に限らず、WebAssemblyやJavaなどのバイトコード類なども含む)のファイル等を指してバイナリと呼ばれることがしばしばある。プロプライエタリのソフトウェアは、バイナリの形態でさらに難読化を掛けて、販売されることが多い。 バイナリ形式でのデータの表現方法はさまざまなものがある。例えば、数値であれば0~9までの数をパターン化して記録するBCD、ゾーンビットと実際の数値、正の数か負の数かを記録する符号ビットからなるアンパック10進数(ゾーン10進数)や、実際の数値と符号ビットだけからなるパック10進数などがある。文字列の扱いとしては、ナル文字('\0')で終端する方法や、長さ(オクテット数、あるいは文字(符号点)の個数)を別に保持する、といった方式がある。前者では、'\0' を含むようなバイナリを「文字列」として扱うことができない。.

新しい!!: Executable and Linkable Formatとバイナリ · 続きを見る »

ライブラリ

ライブラリ()は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。ライブラリと呼ぶ時は、それ単体ではプログラムとして作動させることはできない実行ファイルではない場合がある。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言うことができる。ソースコードの場合と、オブジェクトコード、あるいは専用の形式を用いる場合とがある。たとえば、UNIXのライブラリはオブジェクトコードをarと呼ばれるアーカイバでひとまとめにして利用する。図書館()と同様にプログラム(算譜)の書庫であるので、索引方法が重要である。 また、ソフトウェア以外の再利用可能なものの集合について使われることもある。.

新しい!!: Executable and Linkable Formatとライブラリ · 続きを見る »

リンケージエディタ

リンケージエディタ(リンカ(linker)、連係編集プログラムとも)とは機械語のプログラムの断片を結合し実行可能なプログラムを作成するプログラムのことである。例として、C言語では、ソースファイルをコンパイルするとオブジェクトファイルが生成される。それに他のオブジェクトファイルやライブラリを結合して1つのプログラムが完成する。この結合(リンク)の際リンケージエディタが使われる。.

新しい!!: Executable and Linkable Formatとリンケージエディタ · 続きを見る »

デバッガ

デバッガ(Debugger)とは、デバッグを支援するプログラムのこと。対話的に利用者がプログラムを動作させたり、プログラムが使っている変数等を表示させる機能がある。近年では統合開発環境に含まれていることが多い。また、ICEなどでは、ハードウェアと連携して動作する。 インタプリタには内蔵されていることもある。たとえばperlは起動時に -d オプションを指定することで、デバッガモードになる。.

新しい!!: Executable and Linkable Formatとデバッガ · 続きを見る »

ファイルフォーマット

ファイルフォーマットはコンピュータなどの情報機器で利用するファイルの保存形式である。コンピュータで扱う文書、音声、画像、動画などのさまざまなメディアのファイルを特定の利用方法やアプリケーションソフトウェアで共通に扱うための形式や規格のこと。.

新しい!!: Executable and Linkable Formatとファイルフォーマット · 続きを見る »

オブジェクトファイル

ブジェクトファイル またはオブジェクトコード とは、コンパイラがソースコードを処理した結果生成される、コード生成の結果であるバイナリコードを含む中間的なデータ表現のファイルである。中身は、機械語バイナリとそれに付随するシンボルテーブルやリロケーションテーブルといった付加情報であり、さらにデバッグ支援情報や近年はリンク時最適化等のための高度な情報が含まれる場合もある。オブジェクトファイル群をリンクすることによって最終的な実行ファイルやライブラリが作成される。オブジェクトファイルのほとんどは機械語である(コンピュータのCPUが直接実行できるコード)。オブジェクトファイルフォーマットはコンパイラやアセンブラが生成するオブジェクトファイルのファイルフォーマットである。.

新しい!!: Executable and Linkable Formatとオブジェクトファイル · 続きを見る »

コアダンプ

アダンプ(英語:core dump)は、ある時点の使用中のメモリの内容をそのまま記録したものであり、一般に異常終了したプログラムのデバッグに使われる。最近では、特定のプロセスのメモリイメージ(あるいはその一部)とレジスタの内容などの情報を格納したファイルを指すのが一般的である。しかし、本来は使用中メモリの内容を全てプリントアウトしたものを指した。 その名前は、かつて主記憶用に利用された磁気コアメモリの内容を、ダンプトラックが砂利や小麦などを大量にダンプ(どさっと落とす)するかのようにプリントアウトすることから来ている。 異常終了したプロセスがコアダンプを出力することを、俗に「コアを吐く」という。.

新しい!!: Executable and Linkable Formatとコアダンプ · 続きを見る »

BSD

BSD(ビーエスディー)は、Berkeley Software Distribution の略語で、1977年から1995年までカリフォルニア大学バークレー校 (University of California, Berkeley, UCB) の Computer Systems Research Group (CSRG) が開発・配布したソフトウェア群、およびUNIXオペレーティングシステム (OS)。なお、今日「BSD」という名称は同OSを元に開発されたBSDの子孫の総称として使われることもあるが、この項では主に前述のUCBによるソフトウェア群およびOSについて述べる。 元となったコードベースと設計はAT&TのUNIXと共通であるため、歴史的にはBSDはUNIXの支流 "BSD UNIX" とみなされてきた。1980年代、ワークステーションクラスのシステムベンダーがプロプライエタリなUNIXとしてBSDを広く採用していた。例えば、DECのUltrix、サン・マイクロシステムズのSunOSなどである。これは、ライセンス条件の容易だったためと、当時の多くの技術系企業の創業者がBSDを熟知していたためである。 それらプロプライエタリ (proprietary:非公開) なBSD派生OSは、1990年代にはUNIX System V Release 4とOSF/1に取って代わられ(どちらもBSDのコードを取り入れており、他の現代のUnixシステムの基盤となった)、後期のBSDリリースはいくつかのオープンソース開発プロジェクトの基盤となった。例えば、FreeBSD、NetBSD、OpenBSD、DragonFly BSDなどが今も開発中である。さらにそれら(の全部あるいは一部)が最近のプロプライエタリなOSにも採用されている。例えば、WindowsのTCP/IPコード(IPv4のみ)やアップルのmacOSである。.

新しい!!: Executable and Linkable FormatとBSD · 続きを見る »

COFF

COFF (Common Object File Format) はUnixシステムで用いられる実行ファイル、オブジェクトファイル、共有ライブラリのファイルフォーマット仕様である。Unix System V で導入され、SVR4で導入されたELFによって広く置き換えられる前に、XCOFFやECOFFなどの拡張仕様の基礎を形作った。COFFとその派生種はその後もUnixライクシステムやMicrosoft Windows上で使われ続けている。.

新しい!!: Executable and Linkable FormatとCOFF · 続きを見る »

DWARF

DWARF とは、広く使われているデバッグ用データフォーマットの規格である。当初ELFと共に設計されたが、オブジェクトファイルのフォーマットとは独立している。名称は "ELF" から発想した駄洒落だが、「Debug With Attributed Record Format の頭字語」という説もある。.

新しい!!: Executable and Linkable FormatとDWARF · 続きを見る »

GNUツールチェーン

GNUツールチェーンは、GNUプロジェクトが生み出したプログラミングツール群の総称。これらツールがツールチェーン(次々と使用されるようなツール群)を形成し、アプリケーションソフトウェアやオペレーティングシステムの開発で使われる。 GNUツールチェーンは、Linuxカーネル、BSD、組み込みシステム向けソフトウェアなどの開発で重要な役割を果たしている。Solaris、macOS、Windows(Cygwin、MinGW/MSYS経由)、PlayStation 3などでも、そのまま、あるいは移植した上でGNUツールチェーンを使っている。 GNUツールチェーンに含まれるプロジェクトは以下の通り。.

新しい!!: Executable and Linkable FormatとGNUツールチェーン · 続きを見る »

Linux

Linux(リナックス、他の読みは後述)とは、Unix系オペレーティングシステムカーネルであるLinuxカーネル、およびそれをカーネルとして周辺を整備したシステム(GNU/Linuxシステムも参照)である。.

新しい!!: Executable and Linkable FormatとLinux · 続きを見る »

UNIX System V

System V(システムファイブ、SysV)は、初期の商用UNIXオペレーティングシステムの一種である。.

新しい!!: Executable and Linkable FormatとUNIX System V · 続きを見る »

UNIX Systems Laboratories

UNIX Systems Laboratories(ユニックス・システムズ・ラボラトリーズ、USL)は、ベル研究所の下部組織として1989年に設立された。UNIXの開発とライセンス業務を目的とした組織である。その後、ベル研究所の親会社であるAT&Tの完全子会社となった。 1992年、ノベルは USL とそのUNIX資産(著作権、商標、ライセンスを含む)を買収した。USLはそれまでにSVR4を開発し、System V 系 UNIX の開発はノベル社に引き継がれた。さらに、その後SCOがUNIX資産を買い取って SVR5 を開発した。ただし、SCOは名前が示すとおりカリフォルニア州が本拠地であり、一方 USL はニュージャージー州が本拠地であったため、USL の物理的資産と研究員らはヒューレット・パッカード社が買い取っている。 1992年、USLはBSDに対して訴訟を起こした。この過程で USL は 4.3BSD Net/2 の公開停止を求めた。その後、USLの知的財産権について裁判所が疑念を提示し、1993年に示談が成立している。この影響で BSD を商用利用することへの企業側の抵抗感が大きくなり、Linuxが台頭する結果を招いたという意味で、UNIX市場に与えた影響は大きい。.

新しい!!: Executable and Linkable FormatとUNIX Systems Laboratories · 続きを見る »

ここにリダイレクトされます:

ELFファイルExecutable and Linking Format

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »