前言

在linux系统中,我们经常会遇到各种各样的动态库文件,常见的是.so后缀,那么我们应该如何分析这些文件的用途和作用呢?毕竟我们不能一知半解的“搞事情”。

正文

  1. 查看文件属性

首先,我们从整体上了解一下该文件的基础属性,此时可以使用file命令,示例用法如下图所示:

分析linux中动态库so文件的常用方法-LMLPHP

通过执行结果,我们可以知道这是一个32位的动态库文件。

  1. 查看依赖文件

一般来说,动态库文件都会依赖其他动态库,具体情况还要看该动态库文件的作用和功能,此时可以使用ldd命令,示例用法如下图所示:

分析linux中动态库so文件的常用方法-LMLPHP

可以看出test.so文件依赖了另外7个文件。

此外,我们可以使用readelf命令实现相同的目的,示例用法如下图所示:

分析linux中动态库so文件的常用方法-LMLPHP
  1. 查看符号表

查看so动态库的符号表和导出方法列表,可以使用nm命令,示例用法如下图所示:

分析linux中动态库so文件的常用方法-LMLPHP
  1. 查看汇编信息

如果我们需要查看某个方法的汇编实现,可以使用objdump命令,其实它也具有nm命令的能力,示例命令如下:

输出结果比较多,下面只展示部分结果:


05-01 16:52