Arch Linux ARMでpacmanを介してインストールされたInkscape 0.48.4-15(armv7)を実行しようとしています。
$ 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 - 診断ツールと診断を妨げるシンボリックリンクに従うかどうか。