针对 OS X 10.6 进行编译

Compile for OS X 10.6?

本文关键字:编译 OS 针对      更新时间:2023-10-16

通常,对于我的OS X版本,我一直在运行10.6的旧Mac Book Pro上编译我的应用程序。 这确保了我支持此版本的OS X。

然而,由于各种原因,MBP 不再是一个长期的选择,所以我一直在运行 10.8 的最新设备上编译。 但是,当我这样做时,即使设置了 -mmacosx-version-min=10.6 标志,我的应用程序也无法在 10.6 上运行。 当我设置标志时发生的错误是libSystem.B.dynlib中的"找不到符号:_wcsdup"

查找了此错误,我能找到的唯一建议是直接链接到 10.6 SDK。 但是,当我尝试将 10.6 SDK 从我的 MPB 复制到新机器时(因为 10.6 SDK 未安装在 10.8 上),它无法编译并出现错误,例如"错误:bits/c++config.h:没有这样的文件或目录"我认为这是因为我"安装"SDK 的方式,尽管其他人在这方面取得了成功。

有人有解决方案吗?

VM中运行10.6,如VMWare或VirtualBox。

我可以通过此过程重新安装较旧的SDK和编译器: 我们如何将 ppc/ppc64 以及完整的 10.4/10.5 SDK 支持恢复到 Xcode 4?

您需要在脚本中更改 xcode 安装的路径。

此外,在面向 10.6 时,您可能无法使用 -std=c++11,因为您通常还需要 -stdlib=libc++,它仅在面向 10.7 或更高版本时可用。

Apple 仅从 10.7 开始分发 libc++ 二进制文件。您可以构建自己的libc ++,并将其与您的应用程序一起部署到10.6机器上。但是Apple对编译器进行了硬编码,以便在针对低于10.7的任何内容时不允许-stdlib = libc ++。