C语言基础教程目录:https://blog.youkuaiyun.com/SparkLee2013/article/details/85229406
1、Windows平台查看exe文件所依赖的动态库
1)工具下载
下载exe文件依赖库查看工具Dependency Walker,此软件是免费的
Dependency Walker官方下载地址:http://www.dependencywalker.com/
2)工具使用
启动Dependency Walker -> File -> Open:打开需要查看的文件,如:main.exe
在Dependency Walker工具界面中,我们可以看到被检测文件(main.exe)所依赖的所有动态库,并且列举出了的每个依赖库所提供的函数,如上述main.exe依赖了动态库"c:\windows\system32\msvcrt.dll",并且可以看到此动态库提供了"printf"等函数。
事实上,Dependency Walker不仅仅可以查看.exe文件所依赖的动态库,它其实是可以查看任意32位 或 64位 Windows模块文件(包括:exe, dll, ocx, sys, 等等)所依赖的动态库的。
2、Linux平台查看可执行文件所依赖的共享库
1)使用ldd查看可执行文件所依赖的共享库
# 查看php依赖的共享库
[admin@spk php]$ ldd bin/php
linux-vdso.so.1 => (0x00007fffe6ba9000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f0605252000)
libz.so.1 => /lib64/libz.so.1 (0x00007f060503c000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f0604e21000)
libreadline.so.6 => /lib64/libreadline.so.6 (0x00007f0604bdb000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f06049b4000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f0604789000)
librt.so.1 => /lib64/librt.so.1 (0x00007f0604581000)
libmcrypt.so.4 => /lib64/libmcrypt.so.4 (0x00007f060434f000)
libpng15.so.15 => /lib64/libpng15.so.15 (0x00007f0604123000)
libjpeg.so.62 => /lib64/libjpeg.so.62 (0x00007f0603ece000)
libcurl.so.4 => /lib64/libcurl.so.4 (0x00007f0603c65000)
libm.so.6 => /lib64/libm.so.6 (0x00007f0603962000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f060375e000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f0603545000)
libxml2.so.2 => /lib64/libxml2.so.2 (0x00007f06031da000)
libssl.so.10 => /lib64/libssl.so.10 (0x00007f0602f68000)
libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f0602b07000)
libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007f0602847000)
libc.so.6 => /lib64/libc.so.6 (0x00007f0602484000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f0602281000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0602064000)
libidn.so.11 => /lib64/libidn.so.11 (0x00007f0601e31000)
......
2)使用objdump查看可执行文件所依赖的共享库
# 查看php依赖的共享库
[admin@spk php]$ sudo objdump -p bin/php | grep NEED
NEEDED libcrypt.so.1
NEEDED libz.so.1
NEEDED libresolv.so.2
NEEDED libreadline.so.6
NEEDED libncurses.so.5
NEEDED libtinfo.so.5
NEEDED librt.so.1
NEEDED libmcrypt.so.4
NEEDED libpng15.so.15
NEEDED libjpeg.so.62
NEEDED libcurl.so.4
NEEDED libm.so.6
NEEDED libdl.so.2
NEEDED libnsl.so.1
NEEDED libxml2.so.2
NEEDED libssl.so.10
NEEDED libcrypto.so.10
NEEDED libfreetype.so.6
NEEDED libc.so.6
VERNEED 0x0000000000424600
VERNEEDNUM 0x0000000000000009
3)使用pldd查看运行进程所依赖的共享库
# 查看php进程所依赖的共享库
[admin@spk php]$ ps aux | grep php
root 2233 0.0 0.0 229456 4968 ? Ss 11:24 0:00 php-fpm: master process (/home/admin/app/php/etc/php-fpm.conf)
[admin@spk php]$ sudo pldd 2233
2233: /home/admin/app/php/sbin/php-fpm
linux-vdso.so.1
/lib64/libcrypt.so.1
/lib64/libresolv.so.2
/lib64/libreadline.so.6
/lib64/libncurses.so.5
/lib64/libtinfo.so.5
/lib64/libmcrypt.so.4
/lib64/libpng15.so.15
/lib64/libjpeg.so.62
/lib64/libcurl.so.4
/lib64/libxml2.so.2
/lib64/libssl.so.10
/lib64/libcrypto.so.10
/lib64/libfreetype.so.6
/lib64/libc.so.6
/lib64/libfreebl3.so
/lib64/libpthread.so.0
/lib64/libselinux.so.1
/lib64/libpcre.so.1
/home/admin/app/php/lib/php/extensions/no-debug-non-zts-20131226/memcache.so
/home/admin/app/php/lib/php/extensions/no-debug-non-zts-20131226/seaslog.so
......
4)使用pmap查看运行进程所依赖的共享库
# 查看php进程所依赖的共享库
[admin@spk php]$ ps aux | grep php
root 2233 0.0 0.0 229456 4968 ? Ss 11:24 0:00 php-fpm: master process (/home/admin/app/php/etc/php-fpm.conf)
[admin@spk php]$ sudo pmap 2233
2233: php-fpm: master process (/home/admin/app/php/etc/php-fpm.conf)
0000000000400000 10396K r-x-- php-fpm
0000000001026000 708K r---- php-fpm
00000000010d7000 60K rw--- php-fpm
00000000010e6000 144K rw--- [ anon ]
00000000015bc000 2380K rw--- [ anon ]
00007fc8025d4000 48K r-x-- libnss_files-2.17.so
00007fc8025e0000 2044K ----- libnss_files-2.17.so
00007fc8027df000 4K r---- libnss_files-2.17.so
00007fc8027e0000 4K rw--- libnss_files-2.17.so
00007fc8027e1000 24K rw--- [ anon ]
00007fc8027e7000 48K r-x-- seaslog.so
00007fc8027f3000 2044K ----- seaslog.so
00007fc8029f2000 8K r---- seaslog.so
00007fc8029f4000 4K rw--- seaslog.so
00007fc8029f5000 96K r-x-- memcache.so
00007fc802a0d000 2048K ----- memcache.so
00007fc802c0d000 4K r---- memcache.so
00007fc802c0e000 4K rw--- memcache.so
......
3、参考
How to check what libraries are used by a program or process on Linux:
http://ask.xmodulo.com/check-library-dependency-program-process-linux.html