ldconfig 不遵循用户创建的符号链接

ldconfig 不遵循用户创建的符号链接

我正在尝试运行 Inkscape 0.48.4-15 (armv7),它是通过 Arch Linux ARM 的 pacman 安装的。

$ inkscape
inkscape: error while loading shared libraries: libMagick++-6.Q16HDRI.so.3: cannot open shared object file: No such file or directory

正如预期的那样,共享对象在 /usr/lib 中不可用:

$ ll /usr/lib | grep libMagick+
lrwxrwxrwx   1 root root       30 Jun  5 03:04 libMagick++-6.Q16HDRI.so ->     libMagick++-6.Q16HDRI.so.4.0.0
lrwxrwxrwx   1 root root       30 Jun  5 03:04 libMagick++-6.Q16HDRI.so.4 -> libMagick++-6.Q16HDRI.so.4.0.0
-rwxr-xr-x   1 root root   379428 Jun  5 03:06 libMagick++-6.Q16HDRI.so.4.0.0

因此,我创建了一个将 *.so.3 链接到 *.so.4.0.0 的符号链接:

$ sudo ln -s libMagick++-6.Q16HDRI.so.4.0.0 libMagick++-6.Q16HD.so.3
lrwxrwxrwx   1 root root       30 Jun  5 03:04 libMagick++-6.Q16HDRI.so -> libMagick++-6.Q16HDRI.so.4.0.0
lrwxrwxrwx   1 root root       30 Jun  6 15:15 libMagick++-6.Q16HDRI.so.3 -> libMagick++-6.Q16HDRI.so.4.0.0
lrwxrwxrwx   1 root root       30 Jun  5 03:04 libMagick++-6.Q16HDRI.so.4 -> libMagick++-6.Q16HDRI.so.4.0.0
-rwxr-xr-x   1 root root   379428 Jun  5 03:06 libMagick++-6.Q16HDRI.so.4.0.0

并验证 *.so.3 确实链接到 *.so.4.0.0。

$ readlink -f libMagick++-6.Q16HDRI.so.3
/usr/lib/libMagick++-6.Q16HDRI.so.4.0.0

现在,我重新配置动态链接器运行时绑定并重新运行 Inkscape:

$ sudo ldconfig 
$ ldd $(which inkscape) | grep libMagick++
libMagick++-6.Q16HDRI.so.3 => /usr/lib/libMagick++-6.Q16HDRI.so.3 (0x75cf9000)

为什么*.so.3链接到自身而不是遵循之前创建的符号链接?

答案1

Ldd 不遵循符号链接。它仅显示找到库的路径。 ldd - 诊断工具以及它是否遵循妨碍诊断的符号链接。

相关内容