我在运行 busybox 0.61 的嵌入式系统上有一份 expat XML 处理库的副本。 我需要找出库的版本,但图像上没有“字符串”或“什么”应用程序,也无法重新编译图像。 这些我被迫使用严重受损的 busybox 图像。
有什么方法可以让我在没有“字符串”或“什么”实用程序的情况下找出安装了哪个版本的 expat 库?该库是共享的(libexpat.so.1)
如果这只是一次性问题,你不能将库复制到另一台安装了
strings
的机器上并在那里运行吗?
您必须编写自己的“字符串”等效项。版本不是 elf 格式的一部分。有些库恰好包含带有版本的字符串,而其他库则不然。
特别是对于外籍人士,通过使用 nm 来查看哪些 API 存在和不存在,您可能会得到一个好主意。以编程方式,那就是 dlopen 和 dlsym。
如果是 libexpat 1.95.0 或更高版本,该库将有一个
XML_ExpatVersion()
函数,该函数返回包含库版本的 char *
。
针对库运行
ident
以找出它是什么版本。它与 strings
类似,但它会挑选修订源代码控制库标识符。
希望这有帮助, 此致, 汤姆.
如果使用包管理器安装库,您可以使用它来获取已安装的版本。
例如,在 Alpine 上运行
apk info libexpat
将打印以下内容:
libexpat-2.6.2-r0 description:
XML Parser library written in C (libraries)
libexpat-2.6.2-r0 webpage:
https://libexpat.github.io/
libexpat-2.6.2-r0 installed size:
144 KiB