Linux下,查看 可执行文件 依赖的 动态库的几个方法

简介: Linux下,查看 可执行文件 依赖的 动态库的几个方法

本文介绍在Linux下查看可执行文件的4个方法,前面两个方法是在可执行文件没运行的状态下,后面两个方法在可执行文件运行(即进程)的状态下使用的。文中使用的可执行文件 iperf3 是在测试网络状态的工具,在 https://iperf.fr/iperf-download.php 下载的

一、查看可执行文件的依赖动态库的2个方法

1.1 使用ldd命令查看可执行文件的依赖动态库

使用方法

ldd 可执行文件

例子:使用ldd命令查看iperf3的依赖动态库

# ldd iperf3 
        linux-vdso.so.1 =>  (0x00007ffdc7119000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc5c1a28000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc5c165f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fc5c1d2e000)
# 

注意:某些版本的ldd命令可能会直接调用可执行文件来识别其动态库依赖关系,所以如果可执行文件不受信任,使用ldd命令会有风险。在Ubuntu14.04中的ldd命令实质上是一个shell脚本,可以使用vi /usr/bin/ldd查看

1.2 使用objdump命令查看可执行文件的依赖动态库

使用方法

objdump -p 可执行文件 | grep NEEDED

例子:使用objdump 命令查看iperf3的依赖动态库

# objdump -p iperf3 | grep NEEDED          
  NEEDED               libm.so.6
  NEEDED               libc.so.6
# 

二、查看某个进程的依赖动态库的2个方法

2.1 使用pmap查看进程的依赖动态库

pmap是报告进程的内存映射,同时也会显示正在运行的进程的共享库依赖关系。

使用方法:先查找进程的PID,再调用pmap查看

ps aux | grep 可执行文件
pmap 进程ID

例子

# ps aux | grep iperf3
lu        23430  0.0  0.0   7544   928 pts/14   S    16:22   0:00 ./iperf3 -s
lu        23476  0.0  0.1  15956  2224 pts/14   S+   16:33   0:00 grep --color=auto iperf3
# pmap 23430
23430:   ./iperf3 -s
0000000000400000    104K r-x-- iperf3
0000000000619000      4K r---- iperf3
000000000061a000      4K rw--- iperf3
000000000061b000      4K rw---   [ anon ]
000000000254a000    132K rw---   [ anon ]
00007f359349b000   1784K r-x-- libc-2.19.so
00007f3593659000   2048K ----- libc-2.19.so
00007f3593859000     16K r---- libc-2.19.so
00007f359385d000      8K rw--- libc-2.19.so
00007f359385f000     20K rw---   [ anon ]
00007f3593864000   1044K r-x-- libm-2.19.so
00007f3593969000   2044K ----- libm-2.19.so
00007f3593b68000      4K r---- libm-2.19.so
00007f3593b69000      4K rw--- libm-2.19.so
00007f3593b6a000    140K r-x-- ld-2.19.so
00007f3593d71000     16K rw---   [ anon ]
00007f3593d8b000      4K rw---   [ anon ]
00007f3593d8c000      4K r---- ld-2.19.so
00007f3593d8d000      4K rw--- ld-2.19.so
00007f3593d8e000      4K rw---   [ anon ]
00007ffcd9dad000    132K rw---   [ stack ]
00007ffcd9de4000     12K r----   [ anon ]
00007ffcd9de7000      8K r-x--   [ anon ]
ffffffffff600000      4K r-x--   [ anon ]
 total             7548K
# 

2.2 使用pldd查看进程的依赖动态库

使用方法

ps aux | grep 可执行文件
pldd 进程ID

例子

# sudo pldd 23430
23430:  /home/samba/00_thirdLib/iperf/iperf-3.1.3/result_gcc/bin/iperf3

总结:

以上4个方法可以查看可执行程序的依赖动态库,pldd命令在Ubuntu14.04的运行环境下,没有打印,可能存在问题,前面三个命令都可以大致地查看到可执行文件的依赖动态库。

参考:

https://www.xmodulo.com/check-library-dependency-program-process-linux.html


目录
相关文章
|
7天前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
32 5
|
7天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
24 6
|
7天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
33 6
|
8天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
23 4
|
13天前
|
缓存 监控 Linux
|
4天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
22 3
|
4天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
17 2
|
12天前
|
缓存 监控 Linux
|
15天前
|
Linux Shell 数据安全/隐私保护
|
16天前
|
域名解析 网络协议 安全