Ldd não segue os links simbólicos. Mostra apenas o caminho, onde encontra a biblioteca. ldd - instrumento de diagnóstico e se seguir links simbólicos que impedem o diagnóstico.
Estou tentando executar o Inkscape 0.48.4-15 (armv7) que é instalado via pacman do Arch Linux ARM.
$ inkscape
inkscape: error while loading shared libraries: libMagick++-6.Q16HDRI.so.3: cannot open shared object file: No such file or directory
Como esperado, o objeto compartilhado não está disponível em / 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
Então eu faço um link simbólico ligando * .so.3 a * .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
e verifique se o * .so.3 está vinculado a * .so.4.0.0.
$ readlink -f libMagick++-6.Q16HDRI.so.3
/usr/lib/libMagick++-6.Q16HDRI.so.4.0.0
Agora reconfigure as ligações de tempo de execução do vinculador dinâmico e execute novamente o Inkscape:
$ sudo ldconfig
$ ldd $(which inkscape) | grep libMagick++
libMagick++-6.Q16HDRI.so.3 => /usr/lib/libMagick++-6.Q16HDRI.so.3 (0x75cf9000)
Por que *.so.3
está vinculado a si mesmo e não segue o link simbólico criado anteriormente?
Tags dynamic-linking symlink