我最近将我的构建环境升级到Xcode 6.1.1,在OS X 10.9上运行,现在我无法在OS X Leopard 10.5下再次运行我的应用程序。
对于目标, Base SDK 设置为 OS X 10.6 , OS X部署目标设置为 OS X 10.5 即可。检查构建日志显示这些设置正在进行编译和链接阶段(以export MACOSX_DEPLOYMENT_TARGET=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.5下运行应用程序时,它会立即崩溃并出现错误:
/usr/lib/libstdc++.6.dylib
有点挖掘表明,在OS X 10.9上,install_name_tool
是6.0.9版本的链接,在OS X 10.5上,它是6.0.4版本的链接。
关于SO的其他问题建议答案是在应用程序包中包含所需版本的libstdc ++。6.dylib的副本,并使用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
,确认指向@executable_path
的链接仍指向我使用install_name_tool
设置的install_name_tool
下的路径。< / p>
那么为什么动态链接器会忽略/usr/lib
设置的路径并仍在查看Select Distinct [Business Owner] as BusinessOwner
From [Completed Change Requests$]
Order by [Business Owner]
?
这是解决问题的正确方法吗?