找不到 dyld 符号,但 nm 报告其他情况(OS X 更新问题)
Posted
技术标签:
【中文标题】找不到 dyld 符号,但 nm 报告其他情况(OS X 更新问题)【英文标题】:dyld symbol not found, but nm reports otherwise (OS X Update issue) 【发布时间】:2014-03-29 14:32:03 【问题描述】:我正在开发一个 OpenGL 项目,它编译良好,运行它会出现以下错误:
swr-130-64-133-128:assignment Marcella$ ./run
dyld: lazy symbol binding failed: Symbol not found: _gliCreateContextWithShared
Referenced from: /System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine
Expected in: flat namespace
dyld: Symbol not found: _gliCreateContextWithShared
Referenced from: /System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine
Expected in: flat namespace
我收集到这意味着 OpenGL 框架中缺少符号。但是,nm
另有声明:
0000000000001239 T _gliCreateContextWithShared
Asher 有一个类似的问题,但我不知道如何将他的解决方案应用于我的情况。
值得注意的是:我最近升级到了 OS X 10.9.2,我所有依赖于这个库的项目现在都失败并出现同样的错误。
【问题讨论】:
ios 模拟器出现同样的问题,重启有帮助。 【参考方案1】:通过添加修复它
export DYLD_INSERT_LIBRARIES='/System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine'
到我的 .bash_profile。可能不是最优雅的解决方案,但生活就是这样。
【讨论】:
你也可以在Xcode的Edit Scheme下添加Environment Variables。 我也在寻找分布式应用程序的永久解决方案,而不仅仅是在 Xcode 中启动的应用程序。一个链接建议在 app .plist 文件中定义 LSEnvironment 键,并添加上述键和字符串。但是,它似乎在 Yosemite 10.10.5 中不起作用。以上是关于找不到 dyld 符号,但 nm 报告其他情况(OS X 更新问题)的主要内容,如果未能解决你的问题,请参考以下文章
找不到dyld符号? _UIAccessibilityNotificationVoiceOverIdentifier
dyld:惰性符号绑定失败:找不到符号:_objc_loadWeak
dyld:惰性符号绑定失败:找不到符号:___emutls_get_address