如何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