我在可执行文件上运行了truss命令,并获得以下输出:

stat64(“ / net / xyzmachine / vol / tools / solx64 / studio11 / SUNWspro / lib / rw7 / librt.so.1”,0x080474A0)(正在休眠...)
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)(正在休眠...)

我浏览了buildhost的构建日志和Envs,但是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

10-02 02:11