当前位置: 首页 > 面试题库 >

如何显示Linux可执行文件使用的所有共享库?

弓举
2023-03-14
问题内容

我想知道系统上的可执行文件使用了哪些库。更具体地说,我想对使用最多的库以及使用它们的二进制文件进行排名。我怎样才能做到这一点?


问题答案:
  1. 使用ldd到列表共享为每个可执行文件库。
  2. 清理输出
  3. 排序,计算计数,按计数排序

要在“ / bin”目录中找到所有可执行文件的答案:

find /bin -type f -perm /a+x -exec ldd {} \; \
| grep so \
| sed -e '/^[^\t]/ d' \
| sed -e 's/\t//' \
| sed -e 's/.*=..//' \
| sed -e 's/ (0.*)//' \
| sort \
| uniq -c \
| sort -n

将上面的“ / bin”更改为“ /”以搜索所有目录。

输出(仅针对/ bin目录)将如下所示:

  1 /lib64/libexpat.so.0
  1 /lib64/libgcc_s.so.1
  1 /lib64/libnsl.so.1
  1 /lib64/libpcre.so.0
  1 /lib64/libproc-3.2.7.so
  1 /usr/lib64/libbeecrypt.so.6
  1 /usr/lib64/libbz2.so.1
  1 /usr/lib64/libelf.so.1
  1 /usr/lib64/libpopt.so.0
  1 /usr/lib64/librpm-4.4.so
  1 /usr/lib64/librpmdb-4.4.so
  1 /usr/lib64/librpmio-4.4.so
  1 /usr/lib64/libsqlite3.so.0
  1 /usr/lib64/libstdc++.so.6
  1 /usr/lib64/libz.so.1
  2 /lib64/libasound.so.2
  2 /lib64/libblkid.so.1
  2 /lib64/libdevmapper.so.1.02
  2 /lib64/libpam_misc.so.0
  2 /lib64/libpam.so.0
  2 /lib64/libuuid.so.1
  3 /lib64/libaudit.so.0
  3 /lib64/libcrypt.so.1
  3 /lib64/libdbus-1.so.3
  4 /lib64/libresolv.so.2
  4 /lib64/libtermcap.so.2
  5 /lib64/libacl.so.1
  5 /lib64/libattr.so.1
  5 /lib64/libcap.so.1
  6 /lib64/librt.so.1
  7 /lib64/libm.so.6
  9 /lib64/libpthread.so.0
 13 /lib64/libselinux.so.1
 13 /lib64/libsepol.so.1
 22 /lib64/libdl.so.2
 83 /lib64/ld-linux-x86-64.so.2
 83 /lib64/libc.so.6

编辑-删除了“ grep -P”



 类似资料:
  • 澄清一下,这是一个关于二进制 Linux 可执行文件的问题,而不是脚本,脚本也可以是可执行的,并且通常缺少扩展。 根据我的经验,大多数Linux二进制可执行文件缺少文件扩展名;例如,Linux系统上目录中的大多数文件缺少扩展名。 另一方面,目录中的大多数文件在其文件扩展名中都有,并且也有可执行权限。尝试直接执行文件通常会导致seg错误或一些错误,这是有道理的,因为共享库通常旨在动态链接。但是据我所

  • 我用NetBeans编写了一个程序,现在想与我的同事分享。但是,当他尝试在计算机上运行时,他会收到一条错误消息: 让人困惑的是:我在装有NetBeans的笔记本电脑上写了这篇文章,为了确保它能正常工作,我将文件夹复制到闪存驱动器上,然后在我的电脑上运行。它工作得很好。当我把它发电子邮件给我的同事时,他发现了那个错误。 根据我所看到的,一些解决方案是运行。命令行中的jar。虽然这可能会起作用,但我需

  • 当我在java应用程序中使用文件类编写它时,如下所示 File f=新文件(\\server-ip\sharedfolder); 它也可以工作,但我想让我的应用程序也在Mac/Linux上工作,所以我试图为此使用JCIFS。但我有一个问题,而认证什么我应该使用作为用户名和密码时,客人帐户也不在图片上。我试过了

  • 问题内容: 我经常被要求解决struts.xml配置错误。现在,在更新到更高版本的Struts2之后,我自己遇到了这种不匹配的情况。导致以下错误: 好吧,我猜是可以解决的。但是,有没有一种聪明的方法来html打印所有可用的URL路径? 感谢这个社区的猜测 问题答案: 您可以使用config-browser插件来实现。检查参考文档。该插件的功能之一是 显示所有可访问的操作URL

  • 问题内容: 注意到,创建一个可执行文件,我刚刚得到了奇怪的想法来检查时,我尝试运行它......好结果是发生了什么 段错误 我自己的库。因此,对此感到好奇,我试图“运行” glibc(在我的系统上)。果然,它没有崩溃,但是提供了一些输出: 所以我的问题是:这背后的魔力是什么?我不能只在库中定义符号-可以吗? 问题答案: 我写 了一篇 有关该主题的博客文章,在此我进行了更深入的介绍,因为我发现它很有

  • 问题内容: 有什么方法可以从Java代码中调用库中的函数吗?通常,可以在Java程序中使用Linux 库吗? 问题答案: 答案是“ JNI” :) 这里有几个链接: 如何在Linux上为JNI应用程序编译动态库? http://learn-from-the-guru.blogspot.com/2007/12/java-native-interface-jni-tutorial-hell.html