C++ 为OSX10.6编译?

C++ 为OSX10.6编译?,c++,macos,compilation,C++,Macos,Compilation,通常,对于我的OSX版本,我一直在运行10.6的旧MacBookPro上编译我的应用程序。这确保了我支持这个版本的OS X 但是由于各种原因,MBP不再是一个长期选项,因此我一直在使用运行10.8的最新设备进行编译。但是,当我这样做时,即使设置了-mmacosx version min=10.6标志,我的应用程序也无法在10.6上运行。设置标志时发生的错误是libSystem.B.dynlib中的“Symbol not found:_wcsdup” 我查找了这个错误,我能找到的唯一建议是直接链接

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

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

我查找了这个错误,我能找到的唯一建议是直接链接到10.6SDK。但是,当我尝试将10.6 SDK从我的MPB复制到新机器上时(因为10.8上没有安装10.6 SDK),它无法编译,出现了诸如“error:bits/c++config.h:没有这样的文件或目录”之类的错误。我想这是因为我“安装”SDK的方式,尽管其他人已经成功地安装了SDK


有人有解决方案吗?

在虚拟机(如VMWare或VirtualBox)中运行10.6。

我可以通过以下步骤重新安装较旧的SDK和编译器:

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

此外,当目标为10.6时,您可能无法使用-std=c++11,因为您还需要-stdlib=libc++,而只有在目标为10.7或更高版本时才可用


苹果从10.7开始只发行libc++二进制文件。您可以构建自己的libc++并将其与应用程序一起部署到10.6机器上。但是苹果硬编码编译器,当目标值低于10.7时,不允许使用-stdlib=libc++。

您是否碰巧使用
-std=c++11
进行编译?如果是这样的话,这在10.6下将不起作用,因为它不包含库文件;您需要使用
-std=gnu++11
才能在10.6到10.8之间工作。是的,事实上我是,这很有趣,我必须尝试使用该标志进行编译,看看是否成功。如果您使用过任何C++11,您可能需要对代码进行一些更改。但是,其中一些可以替换为
tr1::
类,但肯定不是全部。@trojanfoe不幸的是,仔细检查发现这是我的一个应用程序,我没有使用C++11支持编译,因此,这不是我使用这个特定应用程序遇到问题的原因。这需要安装光盘或10.6版的dmg,或者一个可以存储的恢复分区,我两者都没有。此外,除非是服务器版本,否则你不能(合法)在虚拟机上运行OS X,这使得获得合法副本更加困难。