如何找出Unix进程加载的dynamic库?

我想运行一个运行几秒钟的Unix程序,而不牺牲执行速度。 完成后,我想知道它使用了什么dynamic共享

什么是适当的命令?

主要的问题是我有一些BLAS的实现,我想弄清楚哪一个正在使用的less数不同的程序中的每一个。

最后,你可以使用strace。 strace <program_to_execute会给你一大堆的信息,包括对库的调用。 它不像其他答案那么干净,但是这是另一种做事的方式。 (并且本身是有用的)

– 克里斯托弗·卡雷尔

使用ldd可以看到链接到特定二进制文件的dynamic库。

像这样:

 $ ldd /usr/bin/wget linux-vdso.so.1 => (0x00007fffa5dff000) libssl.so.0.9.8 => /lib/libssl.so.0.9.8 (0x00007f4d3280e000) libcrypto.so.0.9.8 => /lib/libcrypto.so.0.9.8 (0x00007f4d3247e000) libdl.so.2 => /lib/libdl.so.2 (0x00007f4d32279000) librt.so.1 => /lib/librt.so.1 (0x00007f4d32071000) libc.so.6 => /lib/libc.so.6 (0x00007f4d31cef000) libz.so.1 => /lib/libz.so.1 (0x00007f4d31ad7000) /lib64/ld-linux-x86-64.so.2 (0x00007f4d32a73000) libpthread.so.0 => /lib/libpthread.so.0 (0x00007f4d318ba000) 

除了ldd之外,cat / proc / $ pid / maps还会显示哪些库已经映射到内存中,包括程序启动后加载的dynamic库(还有已删除的项目)