| Not quite. Current Linux packaging formats encourage the developer to build one package per architecture. This means presenting several download choices for the user which can be confusing. The user doesn't always know what his architecture is. The problem can be solved in two ways: 1) Distributing through a repository and have the package manager auto-select the architecture. However this is highly distribution-specific. If you want to build a single tar.gz that works on the majority of the Linux distros then you're out of luck. 2) Compile binaries for multiple architectures and bundle everything into the same package, and have a shell script or whatever select the correct binary. While (2) is entirely doable and does not confuse the end user, it does make the developer's job harder. He has to compile binaries multiple times and spend a lot of effort on packaging. Having support for universal binaries throughout the entire system, including the developer toolchain, solves not only confusion for the end user but also hassle for the developer. On OS X I can type "gcc -arch i386 -arch ppc" and it'll generate a universal binary with two architectures. I don't have to spend time setting up a PPC virtual machine with a development environment in it, or to setup a cross compiler, just to compile binaries for PPC; everything is right there. I think the ultimate point is not to make impossible things possible, but to make already possible things easier, for both end users and app developers. |
Neither the compiler nor the emulator are perfect. Somebody has to test and debug your packaged app on actual PPC hardware.