オブジェクトファイルとは何ですか?

オブジェクトファイルは、コンパイラと呼ばれるプログラムによって生成されたコンピューターファイルであり、データと命令を含む。コンパイラは、プログラミング言語ソースコードをオブジェクトコードとして知られる中間マシン読み取り可能なフォームに変換します。小さなプログラムは単一のオブジェクトファイルにコンパイルされる可能性がありますが、通常、より大きなプログラムは関連する関数のいくつかのファイルにコンパイルされます。これらの個々のオブジェクトファイルはリンカーによって結合され、オペレーティングシステム固有の情報が追加されて実行可能なプログラムが形成されます。

一般的な慣行では、オブジェクトファイルは「.obj」ファイル拡張子で示されます。ただし、これらのファイルにはいくつかの異なる形式があります。最も一般的なのは、Intel®再配置可能なオブジェクトモジュール形式(OMF)と、Windows&RegおよびUNIX®システムVの共通オブジェクトファイル形式(coff)です。

形式に関係なく、オブジェクトファイルには通常、3つのタイプの情報が含まれていますこれにより、他のプログラムモジュールと対話できます。外部参照に開かれている手順とデータは、他のモジュールから呼び出すことができる名前が割り当てられます。 同様に、モジュール以外の情報への参照は記録されますが、名前は割り当てられていません。ファイルがリンクされている場合、名前のない参照に、元々定義されていたモジュールに与えられた名前が割り当てられます。ローカル名は、モジュール内のみで言及される命令とデータに使用されます。

すべてのリンク可能なコードがオブジェクトファイルとして保存されているわけではありません。 ライブラリは、オブジェクトコードとして保存されているプリコンパイルされたルーチンのコレクションです。それらはオブジェクトファイルとほぼ同じ方法で生成され、頻繁に呼ばれる手順を保存するのに役立ちます。リンカーが他のオブジェクトファイル内に参照が見つからない場合、ライブラリファイルで自動的に検索します。プログラミング言語のほとんどの実装機能の標準的なライブラリが付属しています。

動的リンクにより、オブジェクトファイルは複数の実行プログラムで同時に使用できます。リンクされたときにオブジェクトコードをプログラムにバインドする代わりに、プログラムが読み込まれたときに取得されるか、手順が参照された実行時に取得されます。 Windows®環境では、これらは動的リンクライブラリとして知られており、「.dll」拡張機能で示されています。 UNIX®と同様のシステムは、このタイプのファイルを動的共有オブジェクト(DSO)と呼ぶことがよくあります。このタイプのオブジェクトファイルは、特定のプログラムで使用するために実装される場合があり、そのプログラムのインストールの一部になります。

他の言語

この記事は参考になりましたか? フィードバックをお寄せいただきありがとうございます フィードバックをお寄せいただきありがとうございます

どのように我々は助けることができます? どのように我々は助けることができます?