c++ - 无法为非 root 用户加载 libsctp.so

标签 c++ c linux

我有一个使用 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/

相关文章:

c++ - 在 Boost 多索引容器中搜索位域数据

c - C 中的 Pthread 和信号分配

c++ - 不确定如何创建 MakeFIle

python - 是否有与 Java 的 AWT Robot 类等效的 Python?

android - 如何禁用 Android.mk 中 LOCAL_MODULE 的编译?

c++ - 非推导上下文中模板参数推导的解决方法

c++ - 使用 QNetworkAccessManager::get() 时不需要自动内容转换

c++ - 初始化列表和基于范围的函数

c - 我的矩阵在可视化和分配上不一样?

使用共享内存时子进程挂起?