直到本周我都正常使用gdb。现在运行gdb我看到:
(gdb) r
Starting program: /Volumes/MyProg
dyld: Library not loaded: @rpath/libCore.so
Referenced from: /Volumes/MyProg
Reason: image not found
(gdb)
如何修复?
我有:
- OSX 10.9
- GNU gdb(gdb)7.6与MacPorts一起安装
p.S.
我已经重新安装了gdb和Xcode。这于事无补。
我看到很多关于dyld问题的问题,但很明显,我缺乏在OSX上使用库的经验,它们对我来说似乎毫无用处。
例如本主题:dyld问题库未加载但是如何再次下载库?
或者这个主题:Dyld:库未加载但是如何找到安装名称?什么是@rpath
?
我在常规项目设置中使用"嵌入式二进制文件"解决了这个问题。
我通过更改以下设置解决了这个问题
转到项目设置Your_Target->General->Embedded Binaries->点击+按钮并在此处添加您的库
我是如何修复的:
libCore.so
是来自ROOT框架的库,MyProg
使用该库- 如果我理解正确,消息
Library not loaded: @rpath/libCore.so Referenced from: /Volumes/MyProg Reason: image not found
表示链接器找到了库,但无法使用它 - 根,在安装过程中默认使用clang。同时,由于我更喜欢gcc,
MyProg
使用gcc -
我用gcc编译器重新安装了root:
/配置--使用cxx=g++--使用cc=gcc--使用ld=g++
-
我重新编译了
MyProg
。
现在我可以用gdb调试它了。
您可以在此处找到有关rpath的更多信息:链接
所以你需要指向你的libCore.So,但老实说,我没有面对过这个库,所以我不知道它在哪里。
您也可以检查这个答案来了解它是什么rpath:answer
对于Xcode 11或更高版本,如果您使用Cocoapods,还有另一个更简单的解决方案对我有效。
在您的Podfile中,添加use_frameworks!在你的目标线之后
target 'YourAppName' do
use_frameworks!
基本上,它会将您所有的pod作为一个框架添加到您的框架文件夹中。