检测 Linux 存储库中缺失的二进制符号

检测 Linux 存储库中缺失的二进制符号

是否有任何工具可以验证 Linux 存储库是否包含所有需要的二进制符号?我需要验证存储库对二进制符号的完整性。

即我需要知道存储库中的每个可执行文件的所有外部符号(如所报告的nm -g)都由该存储库中的某些共享库提供。

因为现在我的目标存储库不局限于 rpm 或 deb,或者任何特定的发行版,我只需要知道是否有这样的工具?

我没有成功通过谷歌搜索到该内容,因此我至少要感谢谷歌提供的关键词。

答案1

ALT linux 已经实现了一种叫做 set:versions 的依赖类型,

set:versions 是一种紧凑的符号编码,可以高效地进行子集化。这意味着,只使用库中部分符号的可执行文件具有 set:version,可以检测它是否是真子集,即没有缺失符号。

set:version 实现由 Alexey Tourbin 编写。

同时,使用 nm(1) 生成所有提供的库符号以及所有需要的可执行符号的列表并不太难。

如果您对提供/需要的符号使用通用文件格式,并使用“sort -u”按字母顺序排列并删除重复项,那么您可以简单地比较两个文件以确保没有未解析的符号。

相关内容