オブジェクトファイルと実行可能ファイルの違いとは?分かりやすく解説!

この記事には、アフィリエイト広告を利用しています。

スポンサーリンク


オブジェクトファイルと実行ファイルの主な違いは、オブジェクトファイルがソースコードをコンパイルした後に生成されるファイルであるのに対し、実行ファイルはオブジェクトファイルの集合をリンカーで連結した後に生成されるファイルである点です。

C言語は汎用的な高水準プログラミング言語です。

また、構造化プログラミング言語であり、効率的なプログラムを書くことができる。

C言語の応用分野としては、オペレーティングシステム、言語コンパイラ、テキストエディタ、ネットワークドライバ、データベースなどがあります。

C言語プログラミングに関連するファイルとして、オブジェクトファイルと実行可能ファイルがあります

スポンサーリンク

オブジェクトファイルとは

まず、C言語プログラムとは、特定の作業を行うためにC言語によって書かれた命令の集合体です。

このプログラムをソースコードと呼びます。

プログラマーはソースコードを読んで理解することができますが、CPUは理解することができません。

そのため、ソースコードを機械が理解できる形式に変換する必要がある

ソースコードをコンパイルするとオブジェクトコードが生成される。

図1:ソースコード

オブジェクトファイルとは、オブジェクトコードの別名です。

Windows環境では.objという拡張子を持っています。

また、Linux環境では.oという拡張子を持っています。

しかし、CPUはオブジェクト・ファイルを直接実行することはできません。

実行ファイルとは

C言語プログラムを書いた後、もし構文エラーがあれば、プログラマはそれを編集する必要があります

しかし、構文エラーがなければ、コンパイラはソースコードをオブジェクトファイルに変換する。

その後、リンカーがリンク処理を行う。

コンパイラが生成した1つまたは複数のオブジェクトファイルを取り込んで、1つの実行ファイルにまとめます。

さらに、プログラムが必要とする他のプログラムファイルや関数をリンクする

例えば、プログラムが “exp() “関数を持つ場合、リンカーはそのプログラムをシステムの数学ライブラリとリンクさせる。

プログラマは実行ファイル内の命令を理解できませんが、CPUはその命令を読んで理解することができます。

したがって、CPUは実行ファイルを直接実行し、プログラムで定義されたタスクを実行します。

オブジェクトファイルと実行ファイルの関係

  • オブジェクトファイルと実行ファイルの関係は以下の通りです。

オブジェクトファイルと実行ファイルの違い

定義

オブジェクトファイルとは、直接実行できないリロケータブルフォーマットのマシンコードを持つオブジェクトコードを含むファイルです。

実行ファイルとは、コンピュータが直接実行できるファイルで、コード化された命令に従って指示されたタスクを実行することができるものです。

したがって、これは、オブジェクトファイルと実行可能ファイルの主な違いを説明します

タイプ

オブジェクトファイルと実行ファイルのもう一つの違いは、オブジェクトファイルは中間ファイルであり、実行ファイルは最終ファイルであることです。

機能性

また、コンパイラは、ソースコードをオブジェクトファイルに変換します。

しかし、リンカーはオブジェクトファイルをシステムライブラリとリンクさせ、オブジェクトファイルを結合して実行ファイルを作成します。

CPUによる直接実行

また、CPUが実行ファイルを直接実行できるのに対し、オブジェクトファイルはCPUが直接実行することができません。

このように、オブジェクトファイルと実行可能ファイルの大きな違いです

結論

最後に、C言語プログラミングに関連するファイルとして、オブジェクトファイルと実行可能ファイルがあります

オブジェクトファイルと実行ファイルの主な違いは、オブジェクトファイルがソースコードをコンパイルした後に生成されるファイルであるのに対し、実行ファイルはオブジェクトファイルの集合をリンカーで連結した後に生成されるファイルであることです。

タイトルとURLをコピーしました