标签: android linux shared-libraries
如何在共享库文件中生成符号的名称?例如,当使用elfread -Ws读取libutils.so文件(android系统工具库)中的符号时,我得到了几种格式的符号名称:
_ZN7android10VectorImpl14insertVectorAtERKS0_j
等。你如何破译这个符号名称?
答案 0 :(得分:2)
这似乎是一个错误的名称,例如,对于C ++,你可以更好地理解那些使用nm -C选项的人:
nm
-C
<强> -C 强> 的 --demangle 强> [=式] 将低级符号名解码(解码)为用户级名称。除了删除系统前面的任何初始下划线外,这使得C ++函数名称可读。不同的编译器具有不同的修改样式。可选的demangling样式参数可用于为编译器选择适当的demangling样式。有关详细信息,请参阅c++filt。
--demangle
在共享库上使用nm时,此选项会显示其符号:
<强> -D 强> 的 --dynamic 强> 显示动态符号而不是普通符号。这仅对动态对象有意义,例如某些类型的共享库。
-D
--dynamic