Android 如何在.so(共享库)文件中生成符号名?
如何在共享库文件中生成符号的名称?例如,当使用elfread-Ws读取libutils.so文件(android系统utils库)中的符号时,我会得到以下格式的几个符号名称:Android 如何在.so(共享库)文件中生成符号名?,android,linux,shared-libraries,Android,Linux,Shared Libraries,如何在共享库文件中生成符号的名称?例如,当使用elfread-Ws读取libutils.so文件(android系统utils库)中的符号时,我会得到以下格式的几个符号名称: _ZN7android10VectorImpl14insertVectorAtERKS0_j 如何解密这个符号名?< /p> ,这似乎是一个被损坏的名称,例如,C++,并且可以更好地理解那些使用 -c>代码>选项: -C --demangle[=style] 将(demangle)低级符号名称解码为用户级名称。除了删除
_ZN7android10VectorImpl14insertVectorAtERKS0_j
如何解密这个符号名?< /p> ,这似乎是一个被损坏的名称,例如,C++,并且可以更好地理解那些使用<代码> -c>代码>选项:
-C
--demangle
[=style]将(demangle)低级符号名称解码为用户级名称。除了删除系统所提供的任何初始下划线之外,这使得C++函数名称可读。不同的编译器有不同的损坏样式。可选的Demanling style参数可用于为编译器选择适当的Demanling样式。有关Demanling的更多信息,请参见 在共享库上使用
nm
时,此选项显示其符号:
-D
--动态的
显示动态符号而不是普通符号。这仅对动态对象有意义,例如某些类型的共享库
libutils.so是elf格式,因此nm不报告任何符号。@shaveenk您可以通过管道将输出从
readelf
传输到c++filt
,以达到与nm-c