本文介绍在Linux下查看可执行文件的4个方法,前面两个方法是在可执行文件没运行的状态下,后面两个方法在可执行文件运行(即进程)的状态下使用的。文中使用的可执行文件 iperf3 是在测试网络状态的工具,在 https://iperf.fr/iperf-download.php 下载的
一、查看可执行文件的依赖动态库的2个方法
1.1 使用ldd命令查看可执行文件的依赖动态库
使用方法:
ldd 可执行文件
讯享网
例子:使用ldd命令查看iperf3的依赖动态库
讯享网# ldd iperf3 linux-vdso.so.1 => (0x00007ffdc) 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 0000000000 104K r-x-- iperf3 0000000000 4K r---- iperf3 000000000061a000 4K rw--- iperf3 000000000061b000 4K rw--- [ anon ] 000000000254a000 132K rw--- [ anon ] 00007fb000 1784K r-x-- libc-2.19.so 00007f 2048K ----- libc-2.19.so 00007f 16K r---- libc-2.19.so 00007fd000 8K rw--- libc-2.19.so 00007ff000 20K rw--- [ anon ] 00007f 1044K r-x-- libm-2.19.so 00007f 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 ] ffffffffff 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://51itzy.com/kjqy/58736.html