【Linux】使用nm命令查看动态库包含的符号表
文章目录
1. nm的简介
nm命令来自name的简写。nm命令常用于查看二进制文件中的符号表,通常用于静态库和可执行文件。对于动态库(如 .so 文件),你可以使用nm命令结合特定的选项来查看符号表。
2. nm的使用
假设你有一个动态库libexample.so,要查看它的符号表,可以运行以下命令:
nm -D libexample.so
输出的结果可能如下所示:
0000000000001120 T my_function
U 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命令|查看动态库包含的函数符号










