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 - 진단 도구 및 진단을 방해하는 기호 링크를 따르는지 여부입니다.