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


目录
相关文章
|
3天前
|
Linux
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
21 5
Linux 常用文件查看命令
|
15天前
|
存储 Linux Shell
Linux|Transfer.sh 轻松实现文件共享
Linux|Transfer.sh 轻松实现文件共享
28 2
Linux|Transfer.sh 轻松实现文件共享
|
8天前
|
Linux 网络安全 虚拟化
linux怎么把文件传到docker里面
在现代应用开发中,Docker作为流行的虚拟化工具,广泛应用于微服务架构。文件传输到Docker容器是常见需求。常用方法包括:1) `docker cp`命令直接复制文件;2) 使用`-v`选项挂载宿主机目录,实现数据持久化和实时同步;3) 通过SCP/FTP协议传输文件;4) 在Dockerfile中构建镜像时添加文件。选择合适的方法并确保网络安全是关键。
90 1
|
24天前
|
Linux
Linux文件与目录的日常
目录的切换 一般使用(”pwd“)显示当前所在的目录 比如:当前目录是在home下面的,与用户名相同的文件夹,可以使用(”cd“)命令来切换目录; 进入下载目录(”cd home/a/下载“)这种从给目录开头的一长串路经”叫做绝对路径“; 进入图片目录(”cd .. /图片/“)".."代表当前路径的上级路径,相对于当前的目录而言的”叫做相对路径“,(”.“)代表当前路径; 如果,想快速切换,上一个所在目录可以(”cd - / cd..“); 如果,想快速切换,追原始的目录可以(”cd --“); 查看目录及文件
38 14
|
20天前
|
Linux Shell
Linux 将所有文件和目录名重命名为小写
Linux 将所有文件和目录名重命名为小写
25 3
|
10月前
|
Linux
百度搜索:蓝易云【Linux中如何对文件进行压缩和解压缩?】
这些是在Linux中进行文件压缩和解压缩的常见方法。根据您的需求和具体情况,可能会使用其他压缩工具和选项。您可以通过查阅相应命令的帮助文档来获取更多详细信息。
103 1
|
10月前
|
NoSQL Java Linux
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
|
10月前
|
算法 Java Linux
Linux下文件增删改查定位压缩操作与权限所属用户
Linux下文件增删改查定位压缩操作与权限所属用户
91 0
26Linux - 文件管理(文件压缩解压:bzip2)
26Linux - 文件管理(文件压缩解压:bzip2)
80 0
|
10月前
|
Java Shell Linux
Linux【脚本 01】简单Shell脚本实现定时备份文件、压缩、删除超时文件操作(showDoc文件备份脚本举例)
Linux【脚本 01】简单Shell脚本实现定时备份文件、压缩、删除超时文件操作(showDoc文件备份脚本举例)
517 0