我有一个使用 libsctp.so 库的 Linux 应用程序。当我以 root 身份运行它时,它运行良好。
但是当我以普通用户运行它时,它给出了以下错误:
error while loading shared libraries: libsctp.so.1: cannot open shared object file: No such file or directory
但是,当我以普通用户身份执行 ldd 时,它能够看到库:
[sanjeev@devtest6 src]$ ldd myapp
... ... libsctp.so.1 => /usr/local/lib/libsctp.so.1 (0x00d17000)
[sanjeev@devtest6 src]$ ls -lL /usr/local/lib/libsctp.so.1
-rwxrwxrwx 1 root root 27430 2009-06-29 11:26 /usr/local/lib/libsctp.so.1
[sanjeev@devtest6 src]$
有什么问题吗?为什么ldd能够找到libsctp.so,但是实际运行应用程序时,却找不到相同的库?
编辑:刚刚观察到只有为 myapp 设置了 setuid 位时才会出现此问题。
最佳答案
执行以下代码后,我在 Ubuntu 18.04 上遇到了同样的异常:
SctpServerChannel s = SctpServerChannel.open();
运行后问题解决:
sudo apt-get install libsctp1
关于c++ - 无法为非 root 用户加载 libsctp.so,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2559724/