linux查看动态链接器的命令
-
Linux查看动态链接器的命令是`ldd`。通过在终端中输入`ldd [可执行文件路径]`,可以查看一个可执行文件所依赖的动态链接库。
当我们运行一个可执行文件时,它可能会依赖一些共享库文件。这些共享库文件包含了一些被多个可执行文件所共享的代码和资源。动态链接器负责在程序运行时加载这些共享库文件,并将它们连接到可执行文件中。
`ldd`命令的输出会列出可执行文件所依赖的共享库文件的路径。如果一个共享库文件缺失或者版本不匹配,那么这个可执行文件将无法正常运行。
使用`ldd`命令的基本语法是:`ldd [可执行文件路径]`
下面是一个示例:
“`
$ ldd /usr/bin/vlc
linux-vdso.so.1 (0x00007ffc12cf6000)
libvlc.so.5 => /usr/lib/libvlc.so.5 (0x00007f92dde49000)
libvlccore.so.9 => /usr/lib/libvlccore.so.9 (0x00007f92ddb9e000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f92dd97c000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f92dd775000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f92dd393000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f92dd14b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f92dcf47000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f92dcd2a000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f92dca8c000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f92dc872000)
libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x00007f92de18e000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f92dc5f4000)
libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f92dc2b5000)
libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f92dc089000)
libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f92dbf86000)
libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f92dbd80000)
libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x00007f92dbb7b000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f92db953000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f92db682000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f92db46d000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f92db25a000)
“`在上面的示例中,`/usr/bin/vlc`是需要查看的可执行文件的路径。`ldd`命令列出了该可执行文件所依赖的所有共享库文件的路径。这些共享库文件中包括了由`vlc`播放器所需的多个库文件,如`libvlc.so.5`和`libvlccore.so.9`等。
2年前 -
Linux操作系统中,可以使用以下命令来查看动态链接器的相关信息:
1. `ldd`: 这个命令可以列出一个可执行文件或共享库所依赖的动态链接库。它会列出所依赖的库的路径以及库的版本信息。
例如,要查看一个可执行文件`/usr/bin/ls`所依赖的动态链接库,可以使用以下命令:
“`
ldd /usr/bin/ls
“`2. `objdump`: 这个命令用于分析目标文件、可执行文件和共享库。可以使用`-p`选项来查看共享库所依赖的动态链接库。
例如,要查看一个共享库`libfoo.so`所依赖的动态链接库,可以使用以下命令:
“`
objdump -p libfoo.so
“`3. `readelf`: 这个命令可以查看目标文件、可执行文件和共享库的ELF格式的信息,包括动态链接器的地址和名称。
例如,要查看一个可执行文件`/usr/bin/ls`的动态链接器信息,可以使用以下命令:
“`
readelf -l /usr/bin/ls
“`4. `/proc/[PID]/maps`: 在Linux系统中,每个进程都有一个`/proc/[PID]/maps`文件,其中包含了该进程所加载的共享库的路径信息。可以使用`cat`命令查看该文件的内容。
例如,要查看进程ID为1234的进程所加载的共享库路径信息,可以使用以下命令:
“`
cat /proc/1234/maps
“`5. `ldconfig`: 这个命令用于配置动态链接器的运行时绑定。可以使用`-v`选项来输出详细的库搜索和加载信息。
例如,可以使用以下命令来查看动态链接器的配置信息:
“`
ldconfig -v
“`这些命令可以帮助你了解一个可执行文件或共享库所依赖的动态链接库,并获取相关的信息,进而进行调试或问题排查。
2年前 -
在Linux系统中,可以通过以下命令来查看动态链接器相关信息:
1. ldd命令:用于显示可执行文件或共享库依赖的动态链接器的详细信息。
语法:
“`shell
ldd [options] <可执行文件或共享库>
“`示例:
“`shell
ldd /bin/bash
“`运行以上命令后,将会显示出`/bin/bash`可执行文件所依赖的动态链接库列表。
2. readelf命令:用于显示可执行文件或共享库的ELF格式信息,包括动态链接器相关信息。
语法:
“`shell
readelf [options] <可执行文件或共享库>
“`示例:
“`shell
readelf -a /bin/bash
“`运行以上命令后,将会显示出`/bin/bash`可执行文件的ELF格式信息,其中包括动态链接器相关的字段。
3. objdump命令:用于显示可执行文件或共享库的目标文件格式信息,可以包含动态链接器信息。
语法:
“`shell
objdump [options] <可执行文件或共享库>
“`示例:
“`shell
objdump -p /bin/bash
“`运行以上命令后,将会显示出`/bin/bash`可执行文件的目标文件格式信息,其中包括动态链接器的信息。
上述命令可以通过命令行查看动态链接器的相关信息,包括动态链接库的依赖关系、动态链接器的路径等。这些信息对于解决依赖问题、调试问题等都非常有帮助。
2年前