【问题标题】:Undefined symbol "tbb internal Allocate" when loading shared library加载共享库时未定义符号“tbb internal Allocate”
【发布时间】:2012-12-15 12:41:03
【问题描述】:

使用我的共享库的一些人在加载它时遇到问题。 我已经告诉他们按照here 的说明安装“gcc-libs”。

我还告诉他们自己编译共享库,但没有运气。

这个问题还有其他解决方案吗?

这是试图在 CentOS6 上加载插件的程序的日志文件:

[23:16:57]   Failed (plugins/RouteConnectorPlugin.so: undefined symbol: _ZN3tbb8internal12NFS_AllocateEjjPv)
[23:16:57]  Loading plugin failed: RouteConnectorPlugin.so

该程序是开源的,位于here,它是用 C 和 C++ 混合编写的(该程序仅针对 x86 编译)。

【问题讨论】:

  • @KillianDS 你的意思是来自.tgz 的\libs\?我告诉他们安装 GCC-libs 但似乎没有解决问题:)

标签: c++ c linux runtime-error tbb


【解决方案1】:

如果您的共享库依赖于另一个共享库,您应该链接它。然后,当您的库链接到其他一些可执行/共享库时,该依赖项将自动加载,用户无需显式链接该依赖项。

未定义的符号是

$ c++filt _ZN3tbb8internal12NFS_AllocateEjjPv
tbb::internal::NFS_Allocate(unsigned int, unsigned int, void*)

这可能来自您提到的 intel-tbb 库。由于这是您代码的依赖项,因此用户希望您通过将其链接到库中来正确声明该依赖项。

参见例如this answer 了解如何使用 GCC 执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2012-04-07
    • 2018-03-10
    • 1970-01-01
    相关资源
    最近更新 更多