我在可执行文件上运行 truss 命令并得到以下输出:
stat64("/net/xyzmachine/vol/tools/solx64/studio11/SUNWspro/lib/rw7/librt.so.1", 0x080474A0)(正在 sleep ...) stat64("/net/xyzmachine/vol/tools/solx64/studio11/SUNWspro/lib/rw7/librt.so.1", 0x080474A0) Err#2 ENOENT stat64("/net/xyzmachine/vol/tools/solx64/studio11/SUNWspro/lib/librt.so.1", 0x080474A0)(正在 sleep ...)
我查看了 buildhost 的构建日志和环境,但 LD_LIB_PATH、LIBPATH、LD_RUN_PATH 值未指向此位置。我无法从该值的来源获得该值?
有人可以帮助我理解这一点吗? lib搜索路径是如何决定的?同样的情况如何解决?
最佳答案
也许这个库是您的应用程序的某些依赖项的依赖项。 ldd
递归地打印您的应用程序或其依赖项所依赖的所有共享库。
它在 /etc/ld.so.conf
(/etc/ld.so.conf.d/) 或 LD_LIBRARY_PATH 中描述的路径中搜索库。
请注意,rpath
也可以在共享库本身中设置。
更多信息请点击:Program-Library-HOWTO
关于c - ldd 命令在某个任意位置搜索库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3864882/