1

在 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()'

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

4

2 回答 2

2

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

于 2014-01-22T12:20:18.833 回答
0

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

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

我的最终解决方案是利用ar“libstdc++.a”来提取“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
于 2015-04-08T13:56:15.533 回答