我在可执行文件上运行了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