dyld:惰性符号绑定失败:找不到符号 – nm报告找到符号

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

我有一个用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 

因此看起来符号确实在库中。 那么,为什么绑定会失败呢?

简单地说,链接没有发生在第一个库的级别,虽然它没有报告那么多,因为标题被恰当地找到了。

这里有关于为什么会出现这种情况的详细信息

而且,在这里