无法让在 OS X 10.9 上构建的应用程序在 OS X 10.5 上运行

2024-02-13

Problem

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

对于目标来说,Base SDK被设定为操作系统 X 10.6, and OS X 部署目标被设定为操作系统 X 10.5。检查构建日志显示这些设置正在进入编译和链接阶段(以mmacosx-version-min=10.5, export MACOSX_DEPLOYMENT_TARGET=10.5, etc.)

但是,当我在 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_name_tool.

所以我运行命令:

install_name_tool -change /usr/lib/libstdc++.6.dylib @executable_path/libstdc++.6.dylib [Application Name].app/Contents/MacOS/[Application Name]

And otool -L [Application Name].app/Contents/MacOS/[Application Name]现在报告:

@executable_path/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)

I copy /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

...完全相同的错误消息。

Running otool -L在部署计算机上的应用程序上确认链接到libstdc++.6.dylib仍然指向下面的路径@executable_path我设置的install_name_tool.

那么为什么动态链接器会忽略由install_name_tool仍在寻找/usr/lib?

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


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法让在 OS X 10.9 上构建的应用程序在 OS X 10.5 上运行 的相关文章

随机推荐