Mach-O(まーく・おー)はコンパイラが生成するオブジェクトファイルおよび実行ファイルのファイルフォーマットである。NEXTSTEPに由来し、macOSで標準のバイナリファイルフォーマットとして採用されている。
複数アーキテクチャのバイナリを保持する事が可能である。(ファットバイナリ)
以下のような構造になっている。 FatHeader アーキテクチャの数を含む。なくてもよい。 fat_arch FatHeaderの後に続く。CPUの種類などをふくむ。FatHeaderがある場合のみ存在する。 MachHeader CPUの種類、ファイルの種類、ロードコマンドの数を含む。 ロードコマンド MachHeaderの後にロードコマンドがいくつか続く。これはセグメントの情報や実行されるときのレジスタの初期値を指定する。
実行ファイルとして体をなすにはロードコマンドは少なくともセグメントコマンドとスレッドコマンドが必要である。
Carbonアプリケーションではオブジェクトファイル・実行ファイルのフォーマットとしてPreferred Executable Format (PEF) とMach-Oの双方を利用できるが、macOSの機能を利用するにはMach-Oが最も適する。