在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()'
有没有人对这些未定义的参考错误有任何想法?
答案 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