无法在OS X 10上运行构建在OS X 10上运行的应用程序

时间:2015-06-05 18:23:10

标签: xcode macos linker osx-leopard libstdc++

问题

我最近将我的构建环境升级到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.5Dyld 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]

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

0 个答案:

没有答案