在Linux中使用“ LDD”命令

查找程序正在使用的软件库

使用LDD命令显示任何给定程序所需的共享库。LDD命令对于缺少依赖性时锻炼很有用。这命令还列出了丢失的功能和对象。

LDD命令语法

观察适当的句法对于LDD命令避免错误:

ldd [option] ...文件...

使用一个或多个可用的LDD命令开关,并在上述命令中插入[选项]点:

  • - 支持:打印此帮助并退出。
  • - Version:打印版本信息和退出。
  • -d, - -DATA-RELOCS:过程数据重新定位。
  • -r, - 功能 - 元素:过程数据和函数重新定位。
  • -u, - unused:打印未使用的直接依赖性。
  • -v, - Verbose:打印所有信息。

如何使用LDD命令

执行以下命令以获取有关程序的更多信息:

ldd -v/path/to/program/prokutable

输出显示版本信息以及共享库的路径和地址,例如:

libshared
linux-vdso.so.1 =>(0x00007fff26ac8000)
libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000)
/lib64/ld-linux-x86-64.so.2(0x00007ff1dfafe000)
Linux LDD命令

如果完全不存在SO文件,则可以使用以下命令找到缺失的库:

LDD -D路径/到/程序

输出类似于以下内容:

Linux-VDSO.SO.1(0x00007FFC2936B000)
/home/gary/demo/garylib.so => not fundlibc.so.6 => usr/lib/libc.so.6(0x00007FD0C6259000)
/Lib64/ld-linux-x86-64.so.2(0x00007fd0c65fd000)
Linux LDD命令缺失

切勿针对不信任程序运行LDD命令,因为LDD命令可能会执行它。相反,使用仅显示直接依赖性的更安全的替代方案,而不是整个依赖树:

objdump -p/path/to/program |格雷普需要
Linux objdump LDD替代方案

如何找到应用程序的路径

如果您想与LDD找到其依赖关系,则必须提供通往应用程序的完整途径,您可以通过多种方式进行操作。

例如,这是如何找到通往的路径Firefox

查找 / -Name Firefox

问题查找命令但是,它列出了Firefox所在的可执行文件,如下所示:

/etc/skel/.mozilla/firefox
/home //缓存/mozilla/firefox
/home//.mozilla/firefox
/usr/bin/firefox
/usr/lib/firefox
/usr/lib/firefox/firefox

这种方法有点过大,您可能需要使用sudo命令为了提高您的特权,否则您可能会遇到男人允许的错误错误。

相反,它更容易使用在哪里命令找到应用程序的路径:

Firefox的地方

这次输出可能看起来像这样:

/usr/bin/firefox
/etc/firefox
/usr/lib/firefox
linux where命令

然后,要找到Firefox的共享库,请输入以下命令:

ldd/usr/bin/firefox

命令的输出将是这样的:

Linux-VDSO.SO.1(0x00007FFFFFFFF8364000)
libpthread.so.0 =>/usr/lib/libpthread.so.0(0x00007feb9917a000)
libdl.so.2 =>/usr/lib/libdl.so.2(0x00007feb98f76000)
libstdc ++。so.6 => /usr/lib/libstdc++.so.6(0x00007Feb98bf4000)
libm.so.6 =>/usr/lib/libm.so.6(0x00007feb98888f6000)
libgcc_so.sso.1 =>/usr/lib/libgcc_so.s.1(0x00007feb986e0000)
libc.so.6 => /usr/lib/libc.so.6(0x00007Feb98333c000)
/LIB64/LD-LINUX-X86-64.SO.2(0x00007FEB99397000)

linux-vdso.so.1是库的名称,十六进制号是库中加载到内存中的地址。

在许多行上,=>符号之后是一条路径。这是通往物理二进制的途径。十六进制号是库加载的地址。

此页面有用吗?