オブジェクトファイルとは
オブジェクトファイルは、コンパイラと呼ばれるプログラムによって生成されるコンピューターファイルであり、データと命令が含まれています。 コンパイラは、プログラミング言語のソースコードを、オブジェクトコードとして知られる中間の機械可読形式に変換します。 小さいプログラムは単一のオブジェクトファイルにコンパイルされ、大きいプログラムは通常、関連する機能の複数のファイルにコンパイルされます。 これらの個々のオブジェクトファイルはリンカによって結合され、オペレーティングシステム固有の情報が追加されて実行可能プログラムが形成されます。
一般的に、オブジェクトファイルは「.obj」ファイル拡張子で示されます。 ただし、これらのファイルにはいくつかの異なる形式があります。 最も一般的なものは、Intel®Relocatable Object Module Format(OMF)、およびWindows®およびUNIX®System VのCommon Object File Format(COFF)です。多くのINIX®システムでは、Executable and Linkable Format(ELF)はCOFFを交換します。
形式に関係なく、オブジェクトファイルには通常、他のプログラムモジュールとやり取りするための3種類の情報が含まれています。 外部参照に対して開かれているプロシージャとデータには、他のモジュールから呼び出すことができる名前が割り当てられます。 同様に、モジュール外の情報への参照も記載されていますが、名前は割り当てられていません。 ファイルがリンクされると、名前のない参照には、それらが最初に定義されたモジュールで与えられた名前が割り当てられます。 ローカル名は、モジュール内でのみ参照される命令およびデータに使用されます。
すべてのリンク可能なコードがオブジェクトファイルとして保存されるわけではありません。 ライブラリは、オブジェクトコードとして保存されるプリコンパイル済みルーチンのコレクションです。 オブジェクトファイルとほぼ同じ方法で作成され、頻繁に呼び出されるプロシージャを格納するのに役立ちます。 リンカが他のオブジェクトファイル内で参照を見つけられない場合、ライブラリファイルで参照を自動的に検索します。 プログラミング言語のほとんどの実装には、関数の標準ライブラリが付属しています。
動的リンクにより、オブジェクトファイルを複数の実行プログラムで同時に使用できます。 リンク時にオブジェクトコードをプログラムにバインドする代わりに、プログラムがロードされるとき、またはプロシージャが参照されるときに実行時にオブジェクトコードが取得されます。 Windows®環境では、これらはダイナミックリンクライブラリと呼ばれ、「。dll」拡張子で示されます。 Unix®に類似したシステムでは、このタイプのファイルを動的共有オブジェクト(DSO)と呼ぶことがよくあります。 このタイプのオブジェクトファイルは、特定のプログラムで使用するために実装することもでき、そのプログラムのインストールの一部になります。