【Linux】使用nm命令查看动态库包含的符号表
文章目录
- 【Linux】使用nm命令查看动态库包含的符号表
- 1. `nm`的简介
- 2. `nm`的使用
- 3. `nm`查找具体的函数名或变量名
- Reference
1. nm
的简介
nm
命令来自name的简写。nm
命令常用于查看二进制文件中的符号表,通常用于静态库和可执行文件。对于动态库(如 .so
文件),你可以使用nm
命令结合特定的选项来查看符号表。
2. nm
的使用
假设你有一个动态库libexample.so
,要查看它的符号表,可以运行以下命令:
nm -D libexample.so
输出的结果可能如下所示:
0000000000001120 T my_functionU printf
0000000000001190 T another_function
nm
命令的输出通常包含三列信息:
- 符号地址:该符号在内存中的地址(如果已加载)。
- 符号类型:例如
T
表示代码段中的符号(函数),D
表示数据段中的符号(全局变量),U
表示未定义的符号(需要从其他库解析)。 - 符号名称:具体的函数名称或变量名称。
3. nm
查找具体的函数名或变量名
nm
命令可以联合使用管道(pipe)|
和筛选命令grep
来查找具体的函数名,举个例子:
nm ./libexample.so | grep my_function
就可以从 nm
所呈列的信息中寻找名为my_function
的函数
Reference
[1]【Linux】nm命令|查看动态库包含的函数符号