这个nm输出是什么意思?

时间:2014-08-08 19:09:03

标签: c++ linux gcc

我有一个使用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 个答案:

答案 0 :(得分:2)

我建议阅读手册页或关于nm的唯一教程/文档。

来自this教程:

  

nm命令提供有关目标文件或可执行文件中使用的符号的信息。   'nm'命令提供的默认信息是:

     
      
  • 符号的虚拟地址
  •   
  • 描述符号类型的字符。如果字符是小写,则符号是本地的,但如果字符是大写,则符号是外部的
  •   
  • 符号名称
  •