在 Linux 上查找链接到特定库的所有文件

在 Linux 上查找链接到特定库的所有文件

我可以编写一个脚本来组合使用 find、ldd 和 grep,但想找出是否有更好的方法。

例如,如果库是 /usr/lib/libmhash.so.2,我想知道系统上链接到它的所有二进制文件。

答案1

我不知道有没有一种标准方法可以在不检查每个二进制文件的情况下做到这一点。你可以做的是查看包管理器中的依赖关系信息,尽管这不太一样。如果你使用的是基于 Debian 的发行版,apt-cache showpkg <package>则会显示“反向依赖关系”等内容 - 依赖该包的所有包的列表。

例如,libmhash2我的系统依赖于以下软件包:

Reverse Depends: 
  libmhash2:i386,libmhash2
  yubiserver,libmhash2
  wxhexeditor,libmhash2
  wit,libmhash2
  vdetelweb,libmhash2
  thunar-gtkhash,libmhash2
  steghide,libmhash2
  python-mhash-dbg,libmhash2
  python-mhash,libmhash2
  proxytunnel,libmhash2
  passwordmaker-cli,libmhash2
  nd,libmhash2
  nautilus-gtkhash,libmhash2
  mcrypt,libmhash2 0.8.16-1
  mbuffer,libmhash2
  libgringotts2,libmhash2
  libcsync0,libmhash2
  gtkhash,libmhash2
  cd5,libmhash2
  aide-dynamic,libmhash2
  librasqal3,libmhash2
  libmhash-dev,libmhash2 0.9.9.9-2

当然,这不会告诉您有关特定二进制文件的信息,但它可能会解决您的问题(或至少是其他人的问题)。如果没有,您可以随时使用find// lddgrep

相关内容