実行可能ファイルは機械語で手でコード化することができますが、人間が簡単に理解できる高レベル言語のソー 場合によっては、ソースコードをアセンブリ言語で指定することもありますが、これは人間が読めるままであり、マシンコード命令と密接に関連しています。
高レベル言語は、実行可能なマシンコードファイルまたは実行不可能なマシンコードオブジェクトファイルのいずれかにコンパイルされます; アセンブリ言語のソースコードの同等のプロセスはassemblyと呼ばれます。 いくつかのオブジェクトファイルがリンクされて実行可能ファイルが作成されます。 オブジェクトファイル(実行可能かどうかにかかわらず)は、通常、オペレーティングシステム固有の実行可能およびリンク可能形式(ELF)または移植可 これは、生成されたマシンコードに構造を与え、例えばそれを次のようなセクションに分割する。テキスト(実行可能コード)、。データ(初期化されたグローバル変数と静的変数)、および。rodata(定数や文字列などの読み取り専用データ)。
実行可能ファイルには、通常、実行時システムも含まれており、実行時言語機能(タスクのスケジューリング、例外処理、静的コンストラクタやデストラクタ 特に、引数、環境を渡し、終了ステータスを返すとともに、ファイルハンドルのようなリソースを解放するなどの他の起動およびシャットダウン機能。 Cの場合、これは実際のエントリポイントを含むcrt0オブジェクトにリンクすることによって行われ、ランタイムライブラリを呼び出すことによ
実行可能ファイルには、通常、特定のソースコードから直接生成されたものを超えた重要な追加のマシンコードが含まれています。 場合によっては、組み込みシステム開発の場合など、これを省略したり、単にコンパイル、リンク、ロードがどのように機能するかを理解したりすることが望 Cでは、通常のランタイムを省略し、代わりにエントリポイントを生成し、main
を呼び出して開始し、終了時にカーネルに終了ステータスを返すなど、起動とシャットダウンを処理するリンカースクリプトを明示的に指定することでこれを行うことができます。