技術情報

実行ファイルはどう作られるか? (1)

実行ファイルについて

私たちはOS上でなんらかの実行ファイルを用いて様々な作業を行うことができています。例えば、Excelシートを開いて表計算をする、エディタを開いてコード書く、ブラウザを開いてブログ記事を書く、等の作業は全て、各手段に応じた実行ファイルを用いて行われています。今回は、そんな実行ファイルがどのようにして作られるのかを詳細に追っていくことにします。

プログラムからバイナリへ

コンピュータにプログラムを実行させるには、まずはコンピュータがメモリ上にそのプログラムをロードできるように変換する必要があります。また、メモリ上のデータは全て0、1の羅列で表されます。そのため、人間が書いたプログラムも0、1で構成されたデータに変換する必要があります。これをバイナリと呼びます。なんらかの実行ファイルを作ろうと考えた場合、通常はなんらかのプログラム言語(C, C++, 等)でソースコードを書き、それをコンパイル・リンク(後述)することで実行ファイルを作成します。

コンパイルとは

コンパイルとは、人間が書いたプログラムをコンピュータが実行可能なバイナリに変換する操作のことです。Linuxではコンパイル後の実行ファイルはElfというフォーマットに従っており、このフォーマットに格納された情報をコンピュータが解釈することでファイルを実行します。これはオブジェクトファイルと呼ばれます。コンパイルはファイル単位で行われることが多く、ファイル間のつながりも解決する必要があるため後述するリンクという操作が必要になります。

リンクとは

リンクとは、コンパイラによって作られた複数のオブジェクトファイルを結合することで、実行ファイルを作成する操作のことです。リンク操作により、ソースコード単位で作成されたオブジェクトファイルを結合して、より大きな実行ファイルを作ることができます。

次回以降

今回は、実行ファイルの作成について概略を説明しました。次回以降では実際のソースコードとともに実行ファイルの作り方を見ていきます。

D.S S.O
データサイエンティストのS.Oです。