linux - 加载共享库时出错:libsigc-2.0.so 与 libsigc-2.0.so.0
问题描述
我正在构建一个使用 libsigc-2.0 ( -lsigc-2.0 ) 的应用程序
我收到运行时错误,因为应用程序找不到 libsigc-2.0.so.0
error while loading shared libraries: libsigc-2.0.so.0: cannot open shared object file
但是,我的系统只有 libsigc-2.0.so:
ls /usr/lib64/libsigc*
/usr/lib64/libsigc-2.0.so
我的程序在哪里选择.0 !!
我有几个理论,但我不知道如何有效地测试它们:
- 我的 libsigc-2.0.so 实际上是一个 libsigc-2.0.so.0,所以这会以某种方式在我的代码中注入依赖项
- 还有一个图书馆藏在某个地方。又一次,我做了一个发现,没有出现
- 我使用的库或档案之一具有这种依赖性
如果我添加 libsigc-2.0.so.0,我可以解决这个问题,但这对我来说就像是一个 hack(我不明白发生了什么)
编辑 1 感谢您的建议。使用 ldd 后,正如预期的那样,可执行文件绑定到 libsigc-2.0.so.0,但在运行时找不到它
libsigc-2.0.so.0 => not found
使用 LD_DEBUG=all ,显示所有加载路径。在其中任何一个中都找不到 libsigc-2.0.so.0(但 libsigc-2.0.so 是)
最后,使用 -v 抛出了很多库路径(-L)我做了一个脚本来在所有这些路径中查找 libsigc-2.0.so.0,但它没有显示(再次,libsigc-2.0.so) .
这是最后显示的链接命令(我使用的是英特尔编译器-> icpc):
icpc -m64 -gcc -o convert.linux-intel O.linux-intel/convert.o
-L/pathToProject/Executive/lib/linux-intel -lExecutive
-L/home/nhcuzot/projects/3.1/dev/Ports/lib/linux-intel -lStdPorts -Wl,-E
-L/pathToProject/util/linux-intel/lib
-lantlr -lnewmat -ledit_64 -lncurses
/pathToProject/util/linux-intel/lib/libcrypto.a
/pathToProject/util/linux-intel/lib/libssl.a
-pthread -lsigc-2.0 -L/pathToProject/lib
-L/pathToIntelCompiler/ -lifcore -lncurses -lm -ldl -v
解决方案
尝试安装以下依赖项。
sudo apt-get install --reinstall libcairomm-1.0-1v5 libglibmm-2.4-1v5 \
libsigc++-2.0-0v5
推荐阅读
- c++ - 我需要我的向量的最大大小(我给出的值)C++
- npm - 缺少对等依赖项
- regex - 带等号的正则表达式在记事本++中不起作用
- python - Python 找不到满足 urllib3>=1.15 要求的版本
- kubernetes - 当 readinessProbe 失败时销毁未就绪的 pod
- oracle-apex - oracle 顶点安装 5.1.4?
- elixir - 使用 Decimal 或 Money 库进行舍入
- java - 如何使用@manualTesting 标记功能文件,使其内部的场景永远不会运行
- javascript - setAttribute 会自动转义 HTML 字符吗?
- c# - 如何在 ASP.net MVC5 中显示 403 错误的状态描述?