这个 nm 输出的含义是什么?

5

我有一个共享目标文件,使用g++构建,如下所示。

g++ -shared -fPIC -lpthread -O1 -std=c++11 -c AOTelemetry.cpp -L /home -I /opt/java7/include/ -I /opt/java7/include/linux/ -lstdc++ -ldl -lcsfutil -lcsfthread -ldata -lservices -lserviceutil -levent -lhealth -o AOTelemetry.so

当在目标文件上运行nm实用程序时,会将许多内存地址引用(我认为它们是这样的)显示为零。这是什么意思?

0000000000000000 V typeinfo name for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>
0000000000000000 V vtable for ProcessJob
0000000000000000 V vtable for NativePlugin
0000000000000000 V vtable for AOTelemetryPlugin
0000000000000000 V vtable for Shutdown 
0000000000000000 V vtable for BdtBuffer
             U vtable for __cxxabiv1::__class_type_info
             U vtable for __cxxabiv1::__si_class_type_info
0000000000000000 V vtable for std::_Sp_counted_ptr<ProcessJob*, (__gnu_cxx::_Lock_policy)2>
0000000000000000 V vtable for std::_Sp_counted_ptr<Shutdown*, (__gnu_cxx::_Lock_policy)2>
0000000000000000 V vtable for std::_Sp_counted_ptr<BdtBuffer*, (__gnu_cxx::_Lock_policy)2>
0000000000000000 V vtable for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>

1
你看过nm命令的手册页了吗? - Captain Obvlious
1
是的,我做了。它只是说符号类型V是一个弱对象。 - sdmello
1个回答

7
我建议阅读一个关于“nm”命令的手册或者教程/文档。
根据这篇教程:
"nm"命令提供了有关对象文件或可执行文件中使用的符号信息。默认情况下,“nm”命令提供以下信息:
- 符号的虚拟地址 - 一个字符,表示符号类型。如果字符是小写,则表示该符号为局部符号;如果字符是大写,则表示该符号为外部符号。 - 符号的名称

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接