TL;DR
コンパイラやアセンブラがソースコードを翻訳して生成する、実行ファイルの前段階のプログラムコードを格納したファイル。リンカが複数のオブジェクトファイルを結合し、実行ファイルやライブラリを作る。
仕組み
Wikipedia によると、オブジェクトファイルには機械語の命令のほか、シンボルテーブル、再配置情報(リロケーション)、デバッグ情報などが入っている。再配置情報は、リンカが実行ファイルやライブラリを作るときに使う。
名前修飾では、コンパイラが関数のシグネチャや型情報を名前にエンコードして、オブジェクトファイルに書き出す。
例
代表的なフォーマットに次のものがある。
- ELF: UNIX 系の OS で広く使われている
- COFF: UNIX System V で採用された。AIX の XCOFF はこの派生である
- Mach-O: NeXT や macOS で使われている
- その他: a.out、DOS の COM、Windows の PE など