Xcode 无法使在OS X 10.9上构建的应用程序在OS X 10.5上运行 问题

Xcode 无法使在OS X 10.9上构建的应用程序在OS X 10.5上运行 问题,xcode,macos,linker,osx-leopard,libstdc++,Xcode,Macos,Linker,Osx Leopard,Libstdc++,我最近将构建环境升级到Xcode 6.1.1,运行在OS X 10.9上,现在我很难让我的应用程序在OS X Leopard 10.5下再次运行 对于目标,基本SDK设置为OS X 10.6,OS X部署目标设置为OS X 10.5。检查构建日志表明,这些设置正在进入编译和链接阶段(以mmacosx version min=10.5、export MACOSX\u DEPLOYMENT\u TARGET=10.5等形式) 但是,当我在OS X 10.5下运行应用程序时,它会立即崩溃,并出现以下错

我最近将构建环境升级到Xcode 6.1.1,运行在OS X 10.9上,现在我很难让我的应用程序在OS X Leopard 10.5下再次运行

对于目标,基本SDK设置为OS X 10.6,OS X部署目标设置为OS X 10.5。检查构建日志表明,这些设置正在进入编译和链接阶段(以
mmacosx version min=10.5
export MACOSX\u DEPLOYMENT\u TARGET=10.5
等形式)

但是,当我在OS X 10.5下运行应用程序时,它会立即崩溃,并出现以下错误:

Dyld Error Message:
  Symbol not found:    __ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv
  Referenced from: /[path]/[Application Name].app/Contents/MacOS/[Application Name]
  Expected in: /usr/lib/libstdc++.6.dylib
到目前为止我都试过了 仔细研究一下就会发现,在OS X 10.9上,
/usr/lib/libstdc++.6.dylib
是到版本6.0.9的链接,在OS X 10.5上是到版本6.0.4的链接

关于SO的其他问题表明,答案是在应用程序包中包含所需版本的libstdc++.6.dylib的副本,并使用
install\u name\u tool
将动态链接器指向它

所以我运行命令:

install_name_tool -change /usr/lib/libstdc++.6.dylib @executable_path/libstdc++.6.dylib [Application Name].app/Contents/MacOS/[Application Name]
otool-L[Application Name].app/Contents/MacOS/[Application Name]
现在报告:

@executable_path/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
我将
/usr/lib/libstdc++.6.0.9.dylib
复制到
[Application Name].app/Contents/MacOS/libstdc++.6.dylib
位置,然后将应用程序复制到部署计算机上并获取

Dyld Error Message:
  Symbol not found:    __ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv
  Referenced from: /[path]/[Application Name].app/Contents/MacOS/[Application Name]
  Expected in: /usr/lib/libstdc++.6.dylib
…完全相同的错误消息

在部署计算机上的应用程序上运行
otool-L
可以确认指向
libstdc++.6.dylib
的链接仍然指向我使用
安装\u name\u工具设置的
@executable\u path
下的路径

那么,为什么动态链接器忽略了由
install\u name\u tool
设置的路径,仍然在
/usr/lib
中查找


这是问题的正确解决方案吗?

为什么不能使用最新的SDK进行构建?@SevenBits这是一个遗留应用程序,有很多对已从SDK的更高版本中删除的长期不推荐的函数的调用。更新整个应用程序超出了正在准备的小升级的范围。