构建KleeNet时,“未定义的_M_hook引用”错误

时间:2013-10-13 14:33:38

标签: c++

在ubuntu 12.10下构建KLeeNet时,出现以下错误:

MemCpyOptimizer.cpp:(.text+0x2c25): undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'
MemCpyOptimizer.cpp:(.text+0x2daa): undefined reference to `std::__detail::_List_node_base::_M_unhook()'

有没有人对这些未定义的参考错误有任何想法?

2 个答案:

答案 0 :(得分:2)

问题似乎与libstdc++(我的)有关。 我使用了更新版本的libstdc++.so.6(添加了LIBRARY_PATH的新路径)。

答案 1 :(得分:0)

由于我不能/不想交换库的目标系统,我的解决方案是使用编译器选项。

一个非常简单的方法是-static-libstdc++,但这给了我一个巨大的可执行文件。

我的最终解决方案是在" libstdc ++上使用ar。"提取" list.o" (其中包含2个有问题的函数和2个其他函数)并指示ld包含整个对象(8kB)。我期望副作用很少,因为总共只有4个函数被静态包含(并且ELF等提供了一个实现在运行时使用)。详细说明:

ar x "${TARGET}/x86/lib/gcc/4.6.3/libstdc++.a" list.o
g++ source.cpp -Wl,--whole-archive "./list.o" -Wl,--no-whole-archive # more options...
rm ./list.o