ajd*_*con 3 shared-libraries strace
(注意:下面的二进制文件和二进制文件以及库的名称都是混淆的,以保护无辜者.;-)该应用程序在NDA下是专有的,但行为可能不依赖于它.)
我有一个Linux二进制文件,在运行时会输出以下错误:
binary:加载共享库时出错:libshared.so:无法打开共享对象文件:没有这样的文件或目录
自libshared以来,它本身就令人困惑.所以在LD_LIBRARY_PATH中.然而,
运行时正确找到库ldd binary(即ldd输出指向文件位置)
运行时可以正确找到库strace binary,以便程序能够打印其使用信息!
我从来没有见过一个应用程序,当它自己运行而不是在strace中运行时表现不同,但我想也许其他人已经看到过这种情况发生之前?任何想法如何解决这个问题?
我没有源,所以我无法重建.在strace下运行应用程序可能不是首发.操作系统是RHEL 6.2.
小智 7
(老问题,但希望这会帮助其他人)
在新的Linux安装下,标准系统运行时链接程序不会将LD_LIBRARY_PATH用于已设置SUID的程序.看来,使用strace,GDB和朋友们的工作方式不同,并且做使用LD_LIBRARY_PATH.
对于suid程序,必须在系统库缓存中找到所有库.检查(以root用户身份)是否存在"缺失"库
ldconfig -p | grep <my_library_name>
Run Code Online (Sandbox Code Playgroud)
并且,如果缺少任何内容,请根据需要将其添加到/etc/ld.so.conf或ld.so.conf.d /中的新文件中,然后使用
ldconfig -v
Run Code Online (Sandbox Code Playgroud)
或者,如果不需要,则删除SUID位,当然.
| 归档时间: |
|
| 查看次数: |
2370 次 |
| 最近记录: |