在Linux上使用LDD命令

LDD显示特定Linux命令需要运行的共享对象文件。

  • 在脸书上分享
  • 分享到Twitter
  • 分享LinkedIn
  • 分享Reddit
  • 通过电子邮件分享
  • 打印资源
数字混乱 /弱点 /脆弱性中的断开链接

共享对象文件通过提供信息应用程序需要执行其工作来简化程序,但这不必是应用程序本身的一部分。要查找Linux命令调用的以下哪个文件,请使用LDD命令。

什么是共享对象文件?

共享对象文件(指定为.so)是程序启动时自动链接到程序的库,但作为独立文件存在。它们包含一个或多个程序可以使用的信息来卸载资源,以便任何调用.So文件本身的程序实际上都必须实际提供所有所需的工具。这些文件可以链接到任何程序,并在内存中加载。

一个.so文件可能包含有关如何快速搜索整个计算机或执行非常复杂的计算的信息和功能。然后,几个程序可以调用该.SO文件。实际上,可以更新/替换。

共享库可以在运行时链接到任何程序。将它们视为许多不同程序可以使用的代码块,因此,这些程序比确保所有使用它们包含它们的程序都更小,更有效,并在代码更改时根据需要进行更新。

使用LDD

这个简单的示例使用LDD找出哪些文件日期命令用途:

$ ldd/usr/bin/date linux-vdso.so.1(0x00007ffd230e5000)libc.so.6 =>/lib64/lib64/libc.so.6(0x0000007f8e9fc54000)(0x00007F8E9FE52000)

上面的结果表明日期命令使用三个共享对象文件。

请注意,使用时必须在文件中包含一个完整的路径名LDD。否则,LDD查看程序名称的当前目录,不太可能找到它。

$ LDD日期ldd:./date:没有此类文件或目录

如果您不确定特定程序的位置,可以使用哪一个命令在下面显示的任何一种形式中。

$ pwd/usr/bin/pwd $ ldd/usr/bin/bin/pwd linux-vdso.so.1(0x00007ffe9df9b000)libc.so.so.so.so.so.so.so.so.so.6 =>/lib64/libc.so.6(0x00007f686d670000)/ld-libc.so.6Linux-X86-64.SO.2(0x00007F686D85D000)

或者

$ ldd` pwd` pwd`linux-vdso.so.1(0x00007ffc3b9e4000)libc.so.6 => /lib64/lib64/libc.so.6(0x0000007f2d491a9000))

您可以通过使用-v(或者- verbose) 选项:

$ ldd -v`pwd` pwd`linux-vdso.so.1(0x00007ffeea1f6000)libc.so.6 => /lib64/libc.so.6(0x0000007ff3b0c64000)(0x00007FF3B0E51000)版本信息:/usr/bin/pwd:libc.so.6(glibc_2.3)=>/lib64/libc.so.so.so.6 libc.so.6(glibc_2.14)=>/lib64/libc。so.6 libc.so.6(glibc_2.3.4)=> /lib64/libc.so.6 libc.so.6(glibc_2.33)=> /lib64/libc.so.so.so.so.so.so.so.6(glibc_2.4)=> /lib64/libc.so.6 libc.so.6(glibc_2.2.5)=> /lib64/libc.so.so.6 /lib64/libc.so.6:ld-linux-x86-64。so.2(glibc_2.2.5)=> /lib64/ld-linux-x86-64.so.2 ld-linux-x86-64.so.2(glibc_2.3)=> /lib64 /ld-linux-x86-64.so.2 ld-linux-x86-64.so.2(glibc_private)=> /lib64/ld-linux-x86-64.so.2

LDD当似乎缺少所需的共享库时,有时会使用命令,而生成了“未找到”消息。例如:

libcs​​fml-graphics.so.2.2 =>找不到

如果丢失了许多或全部所需的库,则实际上您可能缺少配置文件或符号链接来建立连接。缺少共享对象文件非常罕见,您不可能遇到此问题。

有些程序仅使用几个共享库,而另一些程序则使用了一堆。看一下重启命令,您会看到这样的很长的文件列表:

$ ldd/usr/sbin/reboot linux-vdso.so.so.1(0x00007ffd0b374000)libsystemd-shared-shared-249.so => /usr/lib/systemd/libsystemd/libsystemd/libsystemd/libsystemd-shared-249.so(0x00007f30f30f30f30f30fbec3000)libgccccc_so.so.so.sso.sso.sso.s.sso.1 => /lib64/libgcc_so.sso.1(0x00007f30fbe9a000)libc.so.6 => /lib64/libc.so.6(0x00007f30fbc90000)libacl.so.so.so.so.1 =>>> /lib64/lib64/libacl.so.1(0x00000077f330f3355000)so.1 => /lib64/libblkid.so.1(0x00007f30fbc4d000)libcap.so.2 => /lib64/libcap.so.2(0x0000007f30fbc43000)0x0077F30FBC07000)libgcrypt.so.20 => /lib64/libgcrypt.so.20(0x000077f30fBACB00S)libip4tc.so.so.2 => /lib64/libip4/libip4tc.so.so.so.2(0x000077f30f30f30f330fbac1000)libkmbkmbkmbmbkmmod.2so.2(0x00007f30fbaa6000)liblz4.so.1 => /lib64/liblz4.so.1(0x00007f30fba82000)libmount.so.1 => /lib64/libmount64/libmount.so.1(0x00007f30fba3ddd000)lib64/libcrypto.so.1.1(0x00007f30fb74d000)libp11-kit.so.0 =>/lib64/libp11-kit.so.0(0x00007f30fbb61b61b00s)libpam.so.so.so.so.0 =>/libppam.0777777777777777.0x00000077 fim。libseccomp.so.2 => /lib64 /libseccomp.so.2 (0x00007f30fb5e8000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f30fb5bc000) libzstd.so.1 => /lib64/libzstd.so.1 (0x00007f30fb4c6000) liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f30fb498000) /lib64/ld-linux-x86-64.so.2 (0x00007f30fc216000) libattr.so.1 => /lib64/libattr.so.1 (0x00007f30fb490000) libgpg-error.so.0 => /lib64/libgpg-error.so.0(0x00007f30fb46a000)libpcap.so.so.1 => /lib64/libpcap.so.so.1(0x000077f30f30fb41d000)libz.so.so.so.1 => /libz64/libz64/libz.soso。1 (0x00007f30fb403000) libffi.so.6 => /lib64/libffi.so.6 (0x00007f30fb3f6000) libaudit.so.1 => /lib64/libaudit.so.1 (0x00007f30fb3c8000) libeconf.so.0 => /lib64/libeconf.so.0 (0x00007f30fb3bd000) libm.so.6 => /lib64/libm.so.6 (0x00007f30fb2e1000) libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f30fb24a000) libibverbs.so.1 => /lib64/libibverbs.so.1 (0x00007f30fb228000) libcap-ng.so.0 => /lib64/libcap-ng.so.0 (0x00007f30fb21d000) libnl-route-3.so.200 => /lib64/libnl-route-3.so.200 (0x00007f30fb197000) libnl-3.so.200 => /lib64/libnl-3.so.200 (0x00007f30fb173000)

当然,此输出没有告诉您有多少个程序使用这些共享库,以及如果从系统中删除其中一个更重要的程序,那么您将遇到多少麻烦。即使是普通命令也可能停止工作。

不要上当。您在Linux系统上输入的每个命令都可能使用共享库。即使是一个适中的命令回声使用多个:

$ ldd/usr/bin/echo linux-vdso.so.so.1(0x00007ffdbf99d000)libc.so.so.6 =>/lib64/libc.so.6(0x0000007f0696277000)(0x00007F069649C000)

这些文件的关键性很明显。幸运的是,很容易欣赏他们,但否则让他们做他们的事情。没有办法凝视他们或询问它们的工作方式。您可以显示一些详细信息,如下所示,但这并不能提供太多的洞察力,即文件提供的功能。

$ ls -l /lib64/libc.so.6 -rwxr -xr -x。1根root 2387984 OCT 1 14:19 /lib64/libc.so.6 $ file /lib64/libc.so.so.6 /lib64/libc.so.6:Elf 64-位LSB共享对象,X86-64,版本1(gnu/linux),
动态链接,解释器lib64/ld-linux-x86-64.so.2,buildid [sha1] =
F891252F9069EDEE265F92CFB9A163880999588B,用于GNU/Linux 3.2.0,未剥离

包起来

共享对象文件是任何Linux系统的极其重要的一部分,因为它们允许程序共享可以分别更新并加载到内存中的资源。很容易确定任何特定命令使用的共享对象文件,但实际上不可能确定它们扮演的角色。

加入网络世界社区足球竞猜app软件FacebookLinkedIn评论最重要的主题。
有关的:

版权所有©2022 IDG Com足球竞彩网下载munications,Inc。