C dyld:惰性符号绑定失败:未找到符号-找到nm报告符号

C dyld:惰性符号绑定失败:未找到符号-找到nm报告符号,c,ruby,cmake,symbols,C,Ruby,Cmake,Symbols,这是一个相当抽象的问题,因为我不知道从哪里开始我自己的调查 我有一个用CMake构造的C包,它生成librpdb.so;我为同一个库设置了一个RubyGem,它生成rpdb.bundle 在Ruby中使用时,我得到以下结果: dyld: lazy symbol binding failed: Symbol not found: _RPDB_RuntimeStorageController_sharedInstance Referenced from: /usr/local/lib/ruby/

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

我有一个用CMake构造的C包,它生成librpdb.so;我为同一个库设置了一个RubyGem,它生成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

看来这个符号确实在图书馆里。那么,为什么绑定会失败呢?

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