c++ 编译动态库出现undefined symbol

如何debug

可以使用nm指令查看undifined simbol的编译的位置:

nm -D test.so 

输出:

000000000099a4dc B _ZN7teaflow9ns_uint64E
0000000000213a10 T _ZN7teaflowlsERSoPKNS_2OpE
0000000000204e00 T _ZN7teaflowlsERSoPKNS_3VarE
                 U _ZN7teaflowlsERSoPKNS_4NodeE
000000000021d790 T _ZN7teaflowlsERSoRKNS_11FloatOutputE
00000000001cd6f0 T _ZN7teaflowlsERSoRKNS_11OpInspectorE

可以看到0000000000204e00位置下面出现了 undefined symbol U _ZN7teaflowlsERSoPKNS_4NodeE.

(2)使用

nm -D test.so  | c++filt

找到位置0000000000204e00

000000000099a4dc B teaflow::ns_uint64
0000000000213a10 T teaflow::operator<<(std::basic_ostream<char, std::char_traits<char> >&, teaflow::Op const*)
0000000000204e00 T teaflow::operator<<(std::basic_ostream<char, std::char_traits<char> >&, teaflow::Var const*)
                 U teaflow::operator<<(std::basic_ostream<char, std::char_traits<char> >&, teaflow::Node const*)
000000000021d790 T teaflow::operator<<(std::basic_ostream<char, std::char_traits<char> >&, teaflow::FloatOutput const&)
00000000001cd6f0 T teaflow::operator<<(std::basic_ostream<char, std::char_traits<char> >&, teaflow::OpInspector const&)

可以看出没有:
teaflow::operator<<(std::basic_ostream<char, std::char_traits >&, teaflow::Node const*)

具体的nm的输出的符号表示可以参考:https://blog.csdn.net/wvtear/article/details/50016285

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读