【问题标题】:Compile for OS X 10.6?为 OS X 10.6 编译?
【发布时间】:2012-11-14 07:00:20
【问题描述】:

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

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

我查看了这个错误,我能找到的唯一建议是直接链接到 10.6 SDK。但是,当我尝试将 10.6 SDK 从我的 MPB 复制到新机器时(因为 10.8 上未安装 10.6 SDK),它无法编译并出现类似“错误:bits/c++config.h: No such file or directory " 我认为这是因为我“安装” SDK 的方式,尽管其他人在这方面取得了成功。

有人有解决办法吗?

【问题讨论】:

  • 你是不是正好用-std=c++11编译?如果是这样,这在 10.6 下将不起作用,因为它不包含库文件;您需要使用-std=gnu++11 在 10.6 到 10.8 上工作。
  • 是的,事实上我是,这很有趣,我将不得不尝试使用该标志进行编译,看看它是否成功。
  • 如果您使用过任何 C++11,您可能需要对代码进行一些更改。但是,其中一些可以替换为tr1:: 类,但肯定不是全部。
  • @trojanfoe 不幸的是,双重检查显示这是我的一个应用程序,我没有使用 C++11 支持编译,所以这不是我使用这个特定应用程序问题的原因。跨度>

标签: c++ macos compilation


【解决方案1】:

在 VMWare 或 VirtualBox 等 VM 中运行 10.6。

【讨论】:

  • 这需要有 10.6 的安装盘或 dmg 或可以存储的恢复分区,我没有。
  • 此外,除非是服务器版本,否则您不能(合法)在虚拟机中运行 OS X,这使得获取合法副本更加困难。
【解决方案2】:

我可以使用此过程重新安装旧的 SDK 和编译器:How can we restore ppc/ppc64 as well as full 10.4/10.5 SDK support to Xcode 4?

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 2010-12-16
    相关资源
    最近更新 更多