Macos 如何在Mac OS X上编译通用库?

Macos 如何在Mac OS X上编译通用库?,macos,compilation,universal-binary,Macos,Compilation,Universal Binary,这可能是一个非常愚蠢的问题,但我对在Mac电脑上开发还不熟悉,而且我对通用二进制文件的使用感到很困难 我在QT Creator中编译了一个应用程序,据lipo称,它正在生成i386架构输出。据我所知,这意味着它正在生产MacOSX32位输出 该应用程序依赖于两个外部库。我正在编译其中一个库,首先调用./config,然后调用make/配置声明它是“为darwin-i386-cc配置的”。但是,在运行make并对结果调用lipo之后,该体系结构报告为x86_64 同样,我还有另一个外部库。这一个没

这可能是一个非常愚蠢的问题,但我对在Mac电脑上开发还不熟悉,而且我对通用二进制文件的使用感到很困难

我在QT Creator中编译了一个应用程序,据lipo称,它正在生成i386架构输出。据我所知,这意味着它正在生产MacOSX32位输出

该应用程序依赖于两个外部库。我正在编译其中一个库,首先调用./config,然后调用make/配置声明它是“为darwin-i386-cc配置的”。但是,在运行make并对结果调用lipo之后,该体系结构报告为x86_64

同样,我还有另一个外部库。这一个没有配置脚本,我只需调用make来编译它。这个函数的输出也是x86_64

如何编译这两个外部库,使它们生成与我的应用程序的i386输出兼容的内容?更好的是,我如何编译这两个外部库来生成通用库,这样我就可以从我的应用程序中生成一个同时在32位和64位上工作的通用二进制文件


另外,根据Mac世界的现状,我是否应该瞄准其他平台来创建一个合适的、用户友好的Mac OS X通用二进制文件?

我无法回答你问题的主要部分,因为我总是使用Xcode而不是make。但对于最后一部分,如果您支持10.6之前的操作系统版本,那么您可能还需要为PowerPC(arch.code“ppc”)进行编译。

最终实现了它

为了控制目标的体系结构,我手动进入并编辑Makefiles

对于其中一个,我在以CFLAGS开头的行的末尾添加了:-arch i386-arch x86\u 64-arch ppc 这产生了一个通用二进制


另一方面,当我做同样的事情时,编译会出错。我必须循环使用,一次只放置一个拱门,然后在生成所有三个拱门后,我用-create标志调用它们的lipo来创建一个通用二进制文件。

对于./configure,您可以使用以下方法:

./configure CFLAGS=“-arch i386-arch x86_64”cxflags=“-arch i386-arch x86_64”LDFLAGS=“-arch i386-arch x86_64”-禁用依赖项跟踪


--禁用依赖项跟踪很重要,否则gcc/g++将拒绝编译代码。

PowerPC构建的东西是否仍然是Mac消费者市场的重要部分所期望的?因此,通用二进制文件预计总共有3个平台?我不知道百分比是多少,但我仍然支持PowerPC,我认为许多其他产品都支持。我还不支持64位,因为我的产品部分是碳的。但是,如果你现在正在开发一种新产品,只使用英特尔也不是不合理的。考虑一下你的市场:一些部门,比如教育,可能会比其他的硬件挂得更长。还有一件事:据我所知,“通用二进制”一词通常是指i38 6+pPC,而不是i38 6+x86y6nnutukt:在10到40%的MAC用户之间有一个PPC计算机。但是,我怀疑用作“主机”的PPC数量将低于10%。您知道这是否也适用于添加iOS SupportHD这个通用库是什么,只是将所有不同的编译压缩在一起?那么你会拥有一个巨大的图书馆吗?