ROOT库错误

时间:2018-02-05 06:55:01

标签: root-framework

所以我(不假思索地)将我的操作系统更新到MacOS High Sierra之后安装了Root 6.12.04。我克隆了git存储库并按照"快速启动"中的所有步骤进行操作。构建根页面。但是我的构建出了问题,这是我尝试启动root的新实例并运行Detector test时出现的错误:

dyld:懒符号绑定失败:未找到符号:__ ZN5TROOT14RegisterModuleEPKcPS1_S2_S1_S1_PFvERKNSt3__16vectorINS5_4pairINS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEiEENSB_ISE_EEEES2_   参考自:/Users/MM/repos/nsd-rootscripts/compile/NSDRootScriptsLib.so   预计在:/Users/MM/cern/root-build/lib/libCore.so

dyld:未找到符号:__ ZN5TROOT14RegisterModuleEPKcPS1_S2_S1_S1_PFvvERKNSt3__16vectorINS5_4pairINS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEiEENSB_ISE_EEEES2_   参考自:/Users/MM/repos/nsd-rootscripts/compile/NSDRootScriptsLib.so   预计在:/Users/MM/cern/root-build/lib/libCore.so

有谁知道构建出错的地方?

2 个答案:

答案 0 :(得分:1)

这意味着ROOT的字典界面已更改,但您的字典源(此处:NSDRootScriptsLib.so中的字典源)未更新。请重新生成词典。

答案 1 :(得分:0)

这不是解决方案,但可能会让您走上正轨。 如果您对使用c++filt发布的符号名称进行了解码,则会得到

TROOT::RegisterModule(
  char const*,
  char const**,
  char const**,
  char const*,
  char const*,
  void (*)(),
  std::__1::vector<
    std::__1::pair<
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >,
      int
    >,
    std::__1::allocator<
      std::__1::pair<
        std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >,
        int
      >
    >
  > const&,
  char const**
)

所以,问题是你的链接器找不到这个TROOT::RegisterModule()函数的定义。

你说问题出在libCore.so。用

查看我的libCore.so
objdump -x libCore.so | grep RegisterModule | c++filt

我可以看到我定义了一个相同的符号。如果此命令没有为您打印任何内容,那么您的编译一定出错并且没有将此函数编译到库中。

不幸的是,这是我能得到你的。