ソースコードを変換して得られた機械語のコード(オブジェクトコード)を、ファイルとしてまとめたものです。
オブジェクトファイルは機械語の形式になっており、コンピュータが直接解釈できます。ただし、実行できるかどうかは場合によります。オブジェクトファイルの中でも、そのまま実行可能であるものを、実行可能ファイルと呼びます。
たとえば、C言語のほとんどの処理系では、1つ1つのソースファイルをコンパイルすることで、それぞれに対応するオブジェクトファイルを得られます。この時点では実行することはできません。そこで、リンカを使ってオブジェクトファイルを結合(リンク)して、1つの実行可能ファイルを生成します。
オブジェクトファイルには、ソースコードを変換したコードのほかにも、最適化のための情報や、デバッグを助けるための情報といった追加情報が書き込まれていることがあります。
最適化のための情報とは、たとえば、リンクの過程で最適化を行うための情報です。前述した生成手順の例のように、オブジェクトファイルは1つ1つのソースファイルに対応したものであって、互いのことは関知しません。しかし、グローバル変数や関数の呼び出しのように、互いを行き来するようなコードは当然あり得ます。そのため、互いのことをより多く知っていれば、その情報を利用した高度な最適化を実現できる場合があります。このようなプログラム全体を巻き込んだグローバルな最適化を行うタイミングとして、リンクの過程が利用でき、その際に使う情報をコンパイルのときに、オブジェクトファイルに埋め込んでおくことがあります。
デバッグを助けるための情報とは、たとえば、変数や関数などの名前(シンボルや識別子と呼ばれる)や型などの情報です。プログラムの実行のためには、こういった情報は必要ありませんが、デバッグ時には助けになります。デバッガで変数の値を確認するときなどに、変数名の一覧が表示できているのは、こういった情報があるからです。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |