コマンドラインからユニバーサルバイナリを生成する

コマンドラインからgcc/g++を起動してユニバーサルバイナリを生成するにはプログラムを動作させたいアーキテクチャを-arch target オプションをつけて指定する。

/* hello_universal.c */
#include <stdio.h>

int main(int argc, char *argv[])
{
  printf("Universal Hello World\n");
  return 0;
}
>gcc -arch i386 -arch ppc -arch x86_64 -arch ppc64 -o hello_universal hello_universal.c
>/hello_universal 
Universal Hello World
>file hello_universal
hello_universal: Mach-O universal binary with 4 architectures
hello_universal (for architecture i386):	Mach-O executable i386
hello_universal (for architecture ppc7400):	Mach-O executable ppc
hello_universal (for architecture x86_64):	Mach-O 64-bit executable x86_64
hello_universal (for architecture ppc64):	Mach-O 64-bit executable ppc64
>

動作させたいアーキテクチャとオプションのtargetとの関係は次の通り。