如何在libfoo.so.1之类的库名下找到完整的文件路径?

Lek*_*eyn 19 c linux linker

如果不实现链接器或使用ldd,我如何找到库的完整路径?Linux上有可用的标准库吗?(POSIX可能吗?)

使用lddgrep在有意使用的文件上libGL.so.1,它看起来像:

$ ldd /usr/bin/glxinfo | grep libGL
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f34ff796000)
Run Code Online (Sandbox Code Playgroud)

给定一个库名libGL.so.1,我怎样才能找到完整的路径/usr/lib/libGL.so.1.最好接受查找32位和64位库的选项.如果没有库那样做,是否存在执行此操作的程序?有点像find-library-path libGL.so.1.该locate libGL.so.1命令不计算在内.

dlopen如果它从该库执行代码,我不想实际加载库或其他东西.

Hon*_*onk 9

使用ldconfig这是管理链接空间的工具.

-p标志允许您浏览所有可用的可链接库.

  • 谢谢你的回答,但是`-p`打印文件中的缓存条目,而不是当前状态(例如`$ LD_LIBRARY_PATH`中的目录不被尊重) (2认同)

cLu*_*pus 8

扩展Honky Tonk的答案,该命令echo "$(ldconfig -p | grep libGL.so.1 | tr ' ' '\n' | grep /)"将为您提供单独的路径。


R..*_*R.. 2

如果您不介意实际加载库并使用一些非标准但广泛可用的函数,则调用dladdr库中的任何符号都将返回包含已加载的完整路径名的信息。