Xcode 创建一个";“通用二进制文件”;来自两个应用程序?

Xcode 创建一个";“通用二进制文件”;来自两个应用程序?,xcode,macos,universal-binary,Xcode,Macos,Universal Binary,简短问题:如何将两个应用程序(一个用于intel,另一个用于ppc)打包成一个通用二进制文件 我目前对这个问题的看法: 我已经阅读了关于通用二进制文件的苹果开发者文档,但还没有找到答案,所以这可能是不可能的 由于某些原因,我将不在此赘述,我的程序中有两个应用程序(相当于使用xtools一次性编译二进制文件),一个用于Intel Mac,另一个用于Mac>=10.3.9,在PPC上运行。共享资源不是问题 我可以将MyProg_intel.app和MyProg_ppc.app放在一个zip中,并以这

简短问题:如何将两个应用程序(一个用于intel,另一个用于ppc)打包成一个通用二进制文件

我目前对这个问题的看法:

我已经阅读了关于通用二进制文件的苹果开发者文档,但还没有找到答案,所以这可能是不可能的

由于某些原因,我将不在此赘述,我的程序中有两个应用程序(相当于使用xtools一次性编译二进制文件),一个用于Intel Mac,另一个用于Mac>=10.3.9,在PPC上运行。共享资源不是问题


我可以将MyProg_intel.app和MyProg_ppc.app放在一个zip中,并以这种方式分发;但这可能会让我将要向其分发程序的许多人感到困惑。

为了创建通用二进制文件,您必须使用Xcode并选择Intel和PPC目标体系结构。据我所知,你不能事后将两个不同的二进制文件塞进一个.app。

查看lipo的手册页。我相信您可以使用-create获取多个输入文件,并创建具有多个体系结构的单个输出文件。

请参阅该工具。它可以让你将PPC和i386二进制文件缝合在一起


此外,有时使用Xcode可以避免不同体系结构的单独目标。例如,如果您需要针对每个体系结构链接不同的二进制库,这将非常有用。

苹果的开发者网站上有一篇文章,介绍了如何使用Xcode使用构建脚本“打包”通用二进制文件。这可能是你获得理智的最佳途径。你可以使用
lipo
,但从长远来看,如果你要更新和维护你的应用程序,那么拥有一个能为你带来奇迹的Xcode项目将占用你更少的时间。

lipo看起来可能是我的解决方案,但输入文件需要一个二进制文件或其他类型的文件,而不是.app(当我尝试时,它说不能映射输入文件((os/kern)无效参数))。我的程序是用python构建的,我的打包方法不会将所有内容都编译成一个二进制文件,存在大量依赖项。您可以使用lipo只合并二进制文件:lipo myapp_ppc.app/Contents/MacOS/myapp-output myapp_i386.app/Contents/MacOS/myapp将ppc端合并到Intel应用程序中,然后可以将其重命名为Universal应用程序。但是其他海报更正确。你应该在构建和链接每个架构后首先创建通用应用程序,而不是两次构建.app然后扔掉一个。py2app已经生成了通用二进制文件。为什么不使用“-arch i386-arch ppc”构建依赖项在CFLAGS、CXXFLAGS和LDFLAGS中?