TL;DR

コンパイラやアセンブラがソースコードを翻訳して生成する、実行ファイルの前段階のプログラムコードを格納したファイル。リンカが複数のオブジェクトファイルを結合し、実行ファイルやライブラリを作る。

仕組み

Wikipedia によると、オブジェクトファイルには機械語の命令のほか、シンボルテーブル、再配置情報(リロケーション)、デバッグ情報などが入っている。再配置情報は、リンカが実行ファイルやライブラリを作るときに使う。

名前修飾では、コンパイラが関数のシグネチャや型情報を名前にエンコードして、オブジェクトファイルに書き出す。

例

代表的なフォーマットに次のものがある。

  • ELF: UNIX 系の OS で広く使われている
  • COFF: UNIX System V で採用された。AIX の XCOFF はこの派生である
  • Mach-O: NeXT や macOS で使われている
  • その他: a.out、DOS の COM、Windows の PE など

関連

出典