1

我想弄清楚动态第三方库在我的磁盘上的位置。这个怎么做?我的问题是我获得了成功的链接,但我不明白从哪里开始。我使用了 gcc 的详细模式,但我只得到了使用的路径。我知道库的名称,但在磁盘上搜索却找不到。所以甚至在运行时成功加载。Windows中是否有类似进程监视器的工具?

谢谢, 瓦迪姆

跟进:

感谢您提供出色的答案,但我仍然陷入困境。我的库没有显示在 ldd 中,但代码链接并成功运行。怎么会有这样的想法?作为参考,我为 32 位构建了相同的项目,它们的所有工作都按预期工作:除非我向我的库添加软链接,否则它既不链接也不运行。显然,我有两个版本的库(32 位和 64 位)。库名称是 libfftw3.so.3

vadim@ubuntu64:~/meg_software/SAM_code/Mains/SAMtime$ ldd SAMtime64

linux-vdso.so.1 =>  (0x00007fff097ff000)

libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff7898d4000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff789515000)

/lib64/ld-linux-x86-64.so.2 (0x00007ff789beb000)

vadim@ubuntu64:~/meg_software/SAM_code/Mains/SAMtime$ ldd SAMtime

linux-gate.so.1 =>  (0xf7739000)

libfftw3.so.3 => /usr/lib/libfftw3.so.3 (0xf753c000)

libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7510000)

libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7365000)

/lib/ld-linux.so.2 (0xf773a000)
4

2 回答 2

0

您可以通过安装 realpath 来做到这一点。

sudo apt-get install realpath

接着

akshayy@ubuntu:/usr/bin$ realpath python
/usr/bin/python2.7

它将返回符号链接指向的位置。

于 2013-05-07T11:01:46.817 回答
0

@devnull 的提示是正确的:ldd会成功的。为了详细说明,我将其写为答案。

ldd path/to/executable

路径可以是相对的,也可以是绝对的。此外,路径可以指向另一个共享库,不一定是可执行文件。还要注意缺少<我不知道@devnull 从哪里得到的。


编辑:

PS:我不知道你是如何/在哪里搜索图书馆的,但你可能会发现locate有用。例如,

$ locate libc.so.6
/home/.../Dropbox/tag_localization/3rd_party/lib/libc.so.6
/lib/i386-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libc.so.6
/lib32/libc.so.6

如果该库是最近安装的,您可能需要使用 updatelocate的缓存

$ sudo updatedb
于 2013-05-07T11:02:28.837 回答