How do I create a universal binary from my own programs?

First, create all versions of your application which are to be assembled to a universal binary. As of 2006, Mac OS X currently supports four architectures: IBM PowerPC (ppc and ppc64), and Intel (i386 and x86_64).

Second, use the utility lipo (read the manpage). in general, it works like that:

lipo ?input file(s)? -create -output ?output file?

will create a fat binary supporting all the architectures corresponding to the input files listed. If one or more of the input files is not a Mac OS X executable or library, you will get an error message.