ldconfig는 사용자가 만든 심볼릭 링크를 따르지 않습니다.

ldconfig는 사용자가 만든 심볼릭 링크를 따르지 않습니다.

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

관련 정보