如何在.so(共享库)文件中生成符号名称?

时间:2016-02-11 01:39:38

标签: android linux shared-libraries

如何在共享库文件中生成符号的名称?例如,当使用elfread -Ws读取libutils.so文件(android系统工具库)中的符号时,我得到了几种格式的符号名称:

_ZN7android10VectorImpl14insertVectorAtERKS0_j 

等。你如何破译这个符号名称?

1 个答案:

答案 0 :(得分:2)

这似乎是一个错误的名称,例如,对于C ++,你可以更好地理解那些使用nm -C选项的人:

  

<强> -C
  的 --demangle [=式]
  将低级符号名解码(解码)为用户级名称。除了删除系统前面的任何初始下划线外,这使得C ++函数名称可读。不同的编译器具有不同的修改样式。可选的demangling样式参数可用于为编译器选择适当的demangling样式。有关详细信息,请参阅c++filt

在共享库上使用nm时,此选项会显示其符号:

  

<强> -D
  的 --dynamic
     显示动态符号而不是普通符号。这仅对动态对象有意义,例如某些类型的共享库。