首页 > 解决方案 > 加载共享库时出错: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.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 

标签: linux

解决方案


尝试安装以下依赖项。

sudo apt-get install --reinstall libcairomm-1.0-1v5 libglibmm-2.4-1v5 \
libsigc++-2.0-0v5

推荐阅读