【问题标题】:dyld: lazy symbol binding failed: Symbol not found - nm reports symbol founddyld:惰性符号绑定失败:未找到符号 - nm 报告找到符号
【发布时间】:2011-03-19 23:05:42
【问题描述】:

这里是一个相当抽象的问题,因为我不知道从哪里开始我自己的调查。

我有一个用 CMake 构建的 C 包,它生成 librpdb.so;我为同一个库设置了一个 Ruby Gem,它生成 rpdb.bundle。

在 Ruby 中使用时,我得到这个:

dyld: lazy symbol binding failed: Symbol not found: _RPDB_RuntimeStorageController_sharedInstance
  Referenced from: /usr/local/lib/ruby/gems/1.9.1/gems/rpdb-0.1.0/lib/rpdb/rpdb.bundle
  Expected in: flat namespace

当我查看库时,nm 报告:

000000000000ea40 T _RPDB_RuntimeStorageController_sharedInstance

所以看起来这个符号确实在库中。那么,为什么绑定会失败呢?

【问题讨论】:

    标签: c ruby cmake symbols


    【解决方案1】:

    简单地说,链接并没有发生在第一个库的级别,尽管它没有报告那么多,因为正确地找到了标题。

    More details regarding why this was occurring for my circumstances, here

    and also, here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      相关资源
      最近更新 更多