是否可以获取共享对象的版本?

Is it possible to get the version of a shared object?

我正在尝试查找我的软件系列中的错误。我有两个发布版本 2.0.962 和 2.0.966。这些版本之间的唯一区别是 lib.so 文件。为了弄清楚从哪里开始查找 lib.so 的源代码树,我需要知道它在每个发布版本中的版本号。

是否有打印共享对象版本的命令行工具?

我从未进行过本机 android 编程,但由于 Android 使用 Linux 内核,因此使用的可执行格式很可能是 "ELF"。对于ELF而言,文件中并没有存储Shared object的版本信息。因此,除非文件名本身是 "libXXX.VERSION.so" 之类的内容,否则没有其他方法可以找出共享对象的版本号。这种技巧一般用在Linux.

我对解决您的问题的建议是:

  1. 尽可能使用修改日期来区分共享对象
  2. 使用 dlopen() 或类似工具打开共享对象并尝试查看正在导出的函数。

来源:http://man7.org/linux/man-pages/man5/elf.5.html 注意:可执行文件中的E_VERSION是ELF格式的版本,不是可执行文件的版本。