dyld:库未加载,原因:找不到映像



直到本周我都正常使用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->点击+按钮并在此处添加您的库

我是如何修复的:

  1. libCore.so是来自ROOT框架的库,MyProg使用该库
  2. 如果我理解正确,消息Library not loaded: @rpath/libCore.so Referenced from: /Volumes/MyProg Reason: image not found表示链接器找到了库,但无法使用它
  3. 根,在安装过程中默认使用clang。同时,由于我更喜欢gcc,MyProg使用gcc
  4. 我用gcc编译器重新安装了root:

    /配置--使用cxx=g++--使用cc=gcc--使用ld=g++

  5. 我重新编译了MyProg

现在我可以用gdb调试它了。

您可以在此处找到有关rpath的更多信息:链接

所以你需要指向你的libCore.So,但老实说,我没有面对过这个库,所以我不知道它在哪里。

您也可以检查这个答案来了解它是什么rpath:answer

对于Xcode 11或更高版本,如果您使用Cocoapods,还有另一个更简单的解决方案对我有效。

在您的Podfile中,添加use_frameworks!在你的目标线之后

target 'YourAppName' do
  use_frameworks!

基本上,它会将您所有的pod作为一个框架添加到您的框架文件夹中。

最新更新