看来Xcode4不再将PPC作为构建选项。对于包含C扩展名的模块使用setup.py时,setup.py总是使用以下选项尝试生成:
gcc-4.2 ... -DMACOSX -arch i386 -arch ppc ...
此操作失败,并显示错误消息

/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/as: assembler (/usr/bin/../libexec/gcc/darwin/ppc/as or /usr/bin/../local/libexec/gcc/darwin/ppc/as) for architecture ppc not installed
Installed assemblers are:
/usr/bin/../libexec/gcc/darwin/x86_64/as for architecture x86_64
/usr/bin/../libexec/gcc/darwin/i386/as for architecture i386

如果我只是从失败的命令中删除-arch ppc,它就可以正常完成,我可以重新运行setup.py build继续下一步。
对于只包含一个C扩展的模块(如ssl)来说,这是可以的,但是对于构建大量扩展的PIL之类的模块来说,这是一个很大的痛苦。
有什么方法可以防止setup.py在编译参数中包含-arch ppc吗?

最佳答案

Remove ppc from compilation flags in python setup scripts
或者,修复关于ppc汇编程序的Xcode 4安装。

$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin
$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin

10-08 08:55