如何确定 Unix 中没有“字符串”或“内容”的库的版本

问题描述 投票:0回答:5

我在运行 busybox 0.61 的嵌入式系统上有一份 expat XML 处理库的副本。 我需要找出库的版本,但图像上没有“字符串”或“什么”应用程序,也无法重新编译图像。 这些我被迫使用严重受损的 busybox 图像。

有什么方法可以让我在没有“字符串”或“什么”实用程序的情况下找出安装了哪个版本的 expat 库?该库是共享的(libexpat.so.1)

unix shared-libraries
5个回答
2
投票

如果这只是一次性问题,你不能将库复制到另一台安装了

strings
的机器上并在那里运行吗?


2
投票

您必须编写自己的“字符串”等效项。版本不是 elf 格式的一部分。有些库恰好包含带有版本的字符串,而其他库则不然。

特别是对于外籍人士,通过使用 nm 来查看哪些 API 存在和不存在,您可能会得到一个好主意。以编程方式,那就是 dlopen 和 dlsym。


2
投票

如果是 libexpat 1.95.0 或更高版本,该库将有一个

XML_ExpatVersion()
函数,该函数返回包含库版本的
char *


1
投票

针对库运行

ident
以找出它是什么版本。它与
strings
类似,但它会挑选修订源代码控制库标识符。

希望这有帮助, 此致, 汤姆.


0
投票

如果使用包管理器安装库,您可以使用它来获取已安装的版本。

例如,在 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
© www.soinside.com 2019 - 2024. All rights reserved.