是否有可能获得共享对象的版本?

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

有没有一个命令行工具来打印共享对象的版本?

我从来没有做过原生的android编程,但是由于Android使用Linux内核,所使用的可执行格式很可能是“ELF”。 就ELF而言,没有存储在文件中的共享对象的版本信息。 所以,除非文件名称本身是说"libXXX.VERSION.so"类的东西,否则找不到共享对象的版本号。 这种技术通常在Linux中使用。

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

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

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