织梦CMS - 轻松建站从此开始!

罗索

Linux查看程序 进程的依赖库的方法

落鹤生 发布于 2015-06-02 18:55 点击:次 
Linux查看程序、进程、动态库的依赖的三种方法:ldd,objdump,pmap。
TAG: ldd  objdump  pmap  

原文:How to check what libraries are used by a program or process on Linux

1. 利用ldd查看可执行程序的依赖库

  1. [root@~]# ldd /usr/local/php/bin/php 
  2. linux-vdso.so.1 =>  (0x00007fff753f5000) 
  3. libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000031f4600000) 
  4. librt.so.1 => /lib64/librt.so.1 (0x000000311ee00000) 
  5. libmysqlclient.so.18 => /usr/local/mysql/lib/libmysqlclient.so.18 (0x00007f767b422000) 
  6. libmcrypt.so.4 => /usr/lib64/libmcrypt.so.4 (0x00007f767b1ef000) 
  7. libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x00007f767af0a000) 
  8. libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x0000003519800000) 
  9. libm.so.6 => /lib64/libm.so.6 (0x00000031f2200000) 
  10. libdl.so.2 => /lib64/libdl.so.2 (0x00000031f1600000) 
  11. libnsl.so.1 => /lib64/libnsl.so.1 (0x00000031f3a00000) 
  12. libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00000031f8a00000) 
  13. libz.so.1 => /usr/local/lib/libz.so.1 (0x00007f767acf2000) 
  14. libssl.so.10 => /usr/lib64/libssl.so.10 (0x000000311c600000) 
  15. libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00000031f7600000) 
  16. libpthread.so.0 => /lib64/libpthread.so.0 (0x000000311ce00000) 
  17. libc.so.6 => /lib64/libc.so.6 (0x00000031f0e00000) 
  18. libresolv.so.2 => /lib64/libresolv.so.2 (0x00000031f3200000) 
  19. libfreebl3.so => /lib64/libfreebl3.so (0x00000031f4e00000) 
  20. /lib64/ld-linux-x86-64.so.2 (0x00000031f0a00000) 
  21. libidn.so.11 => /lib64/libidn.so.11 (0x00000031f7e00000) 
  22. libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x000000351c000000) 
  23. libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x000000311f200000) 
  24. libkrb5.so.3 => /lib64/libkrb5.so.3 (0x000000311e200000) 
  25. libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00000031f7200000) 
  26. libcom_err.so.2 => /lib64/libcom_err.so.2 (0x000000311e600000) 
  27. libssl3.so => /usr/lib64/libssl3.so (0x000000351b800000) 
  28. libsmime3.so => /usr/lib64/libsmime3.so (0x000000351bc00000) 
  29. libnss3.so => /usr/lib64/libnss3.so (0x000000351a800000) 
  30. libnssutil3.so => /usr/lib64/libnssutil3.so (0x000000351a400000) 
  31. libplds4.so => /lib64/libplds4.so (0x000000351ac00000) 
  32. libplc4.so => /lib64/libplc4.so (0x000000351b400000) 
  33. libnspr4.so => /lib64/libnspr4.so (0x000000351b000000) 
  34. libssh4.so.1 => /usr/lib64/libssh4.so.1 (0x0000003519c00000) 
  35. liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x000000351a000000) 
  36. libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00000031f8200000) 
  37. libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00000031f7a00000) 
  38. libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00000031f6e00000) 
  39. libselinux.so.1 => /lib64/libselinux.so.1 (0x00000031f2600000) 

注:ldd通过调用动态链接器来获取可执行程序的依赖库,但是并不推荐在未知的可执行程序上执行业ldd来获取其依赖库,因为部分版本的ldd会直接通过调用该可执行程序来获取其依赖库,这存在安全风险。

2. 利用pmap工具查询未知的可执行程序的依赖库

  1. [root@~]# objdump -p /usr/local/php/bin/php |grep NEEDED 
  2.   NEEDED               libcrypt.so.1 
  3.   NEEDED               librt.so.1 
  4.   NEEDED               libmysqlclient.so.18 
  5.   NEEDED               libmcrypt.so.4 
  6.   NEEDED               libiconv.so.2 
  7.   NEEDED               libcurl.so.4 
  8.   NEEDED               libm.so.6 
  9.   NEEDED               libdl.so.2 
  10.   NEEDED               libnsl.so.1 
  11.   NEEDED               libxml2.so.2 
  12.   NEEDED               libz.so.1 
  13.   NEEDED               libssl.so.10 
  14.   NEEDED               libcrypto.so.10 
  15.   NEEDED               libpthread.so.0 
  16.   NEEDED               libc.so.6 
  17.   NEEDED               libresolv.so.2 

3. 利用pmap查看正在运行时的进程的依赖库

利用pldd工具既可以获取进程的内存映射信息,也可以获取进程的依赖共享库信息:

  1. [root@~/software/pldd]# ps -ef|grep php-fpm 
  2. root     26534     1  0  2014 ?     
  3.    00:01:34 php-fpm: master process (/usr/local/php-5.3.29/etc/php-fpm.conf) 
  4. nobody   26535 26534  0  2014 ?        00:00:04 php-fpm: pool www           
  5. nobody   26536 26534  0  2014 ?        00:00:05 php-fpm: pool www           
  6. root     30510 30324  0 00:39 pts/0    00:00:00 grep php-fpm 
  7. [root@~/software/pldd]# pmap 26534 |head  
  8. 26534:   php-fpm: master process (/usr/local/php-5.3.29/etc/php-fpm.conf) 
  9. 0000000000400000  10452K r-x--  /usr/local/php-5.3.29/sbin/php-fpm 
  10. 0000000001035000     76K rw---  /usr/local/php-5.3.29/sbin/php-fpm 
  11. 0000000001048000    104K rw---    [ anon ] 
  12. 0000000002a65000   3448K rw---    [ anon ] 
  13. 000000311c600000    388K r-x--  /usr/lib64/libssl.so.1.0.1e 
  14. 000000311c661000   2048K -----  /usr/lib64/libssl.so.1.0.1e 
  15. 000000311c861000     16K r----  /usr/lib64/libssl.so.1.0.1e 
  16. 000000311c865000     28K rw---  /usr/lib64/libssl.so.1.0.1e 
  17. 000000311ce00000     92K r-x--  /lib64/libpthread-2.12.so 

注:本文依赖库指的是shared library dependencies。

(zhanhailiang )
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201506/17314.html]
本文出处:网络 作者:zhanhailiang
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容