実行可能ファイル(コンピュータプログラムファイル)
実行可能ファイルは、コンピュータがメモリに読み込み実行できるファイルです。作成方法、一般的な形式、実行の仕組み、セキュリティと移植性に関する重要事項を解説します。
実行可能ファイルとは、コンピュータがメモリに読み込み、実行できる命令を含むファイルである。日常的には、起動時に定められた処理を行う、コンパイルまたは実行用に準備されたコンピュータプログラムを指す。利用者は通常、アイコン、コマンドライン、アプリケーションランチャーを通じて実行可能ファイルを操作する。一方、コンピュータはローダーによって命令をプロセッサへ渡す。
実行可能ファイルは、一般にプログラマーが記述したソースコードから作られる。ソースコードは、コンパイラやインタプリタなどのツールにより実行可能な形式へ変換される。コンパイラはソースコードを、ハードウェアが理解するバイト列であるバイナリ出力へ翻訳する。これはしばしば機械語と呼ばれる。インタプリタ型言語では、代わりにバイトコードが生成される場合や、スクリプトを直接読み取るランタイムによって実行される場合がある。
画像ギャラリー
1 画像特性と一般的な形式
- ファイル形式:オペレーティングシステムは固有の実行可能ファイル形式を使用する。たとえば、WindowsではPE、LinuxではELF、macOSではMach-Oが用いられる。これらの形式には、ヘッダー、プログラムコード、データセクション、メタデータが含まれる。
- 構成要素:実行可能ファイルの一般的な要素には、エントリポイント、コードおよびデータセグメント、シンボルと再配置の情報、署名またはデジタル証明書がある。
- プラットフォーム識別子:ファイル名には拡張子が付くことがある。たとえばWindowsの.exeである。macOSではパッケージやバンドルといったコンテナ構造が使われることもある(macOSのファイル拡張子を参照)。
実行可能ファイルの起動時には、オペレーティングシステムのローダーが内容をメモリへマッピングし、共有ライブラリへの参照を解決して(動的リンク)、プログラムのエントリポイントに制御を移す。必要なコードをすべて含む静的リンク形式の実行可能ファイルもあれば、実行時に提供される外部ライブラリに依存するものもある。
用途、移植性、セキュリティ
実行可能ファイルは、デスクトップアプリケーション、サービス、低水準のシステムユーティリティを配布するための主要な仕組みである。配布と移植性は、アーキテクチャ(CPUの種類)およびOSの慣例に左右される。あるプラットフォーム向けに作成された実行可能ファイルは、通常、別のプラットフォームでは変更せずに動作しない。セキュリティも重要な課題である。署名のない、または改ざんされた実行可能ファイルにはマルウェアが含まれるおそれがあるため、現代のシステムではデジタル署名、権限制御、実行ポリシーによってリスクの低減を図っている。
スクリプトとバイトコードには重要な違いがある。スクリプトファイルは、未加工の機械語に変換されなくてもインタプリタによって実行できる。これに対し、一部のランタイムで使われるバイトコードはソースコードと機械語の中間に位置し、仮想マシンを必要とする。これらの区分を理解することは、多様な環境でソフトウェアを開発、パッケージ化、配備する際に役立つ。
実行可能ファイルを作成または調査するツールや、より技術的な資料については、上記リンク先のコンパイラ文書およびプラットフォーム開発者向けガイドを参照されたい。
関連項目
著者
AlegsaOnline.com 実行可能ファイル(コンピュータプログラムファイル) Leandro Alegsa
URL: https://ja.alegsaonline.com/art/32899