/usr/local/lib의 일부 공유 라이브러리를 찾을 수 없지만 /usr/lib에 있습니다.

/usr/local/lib의 일부 공유 라이브러리를 찾을 수 없지만 /usr/lib에 있습니다.

아래와 같이 /usr/lib에 있는 심볼릭 링크 공유 라이브러리를 사용하여 실행 파일을 성공적으로 실행할 수 있습니다.

sudo ln -s /lib/i386-linux-gnu/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.4

유지 관리를 더 쉽게 하기 위해 /usr/local/lib로 옮기고 싶습니다.

sudo ln -s /lib/i386-linux-gnu/libcrypto.so.0.9.8 /usr/local/lib/libcrypto.so.4

하지만 내 시스템은 이 특정 심볼릭 링크를 무시하고 있는 것 같습니다. /usr/local/lib는 관련 ld.so.conf 설정에 있으며 실제로 ldconfig -v.

/usr/local/lib:
        libcrypto.so.0.9.8 -> libcrypto.so.4

지금까지 내 유일한 단서는 ldconfig가 실제 파일 이름으로 돌아가는 추가 심볼릭 링크를 생성한다는 것입니다.

/usr/local/lib $ ls -l *so*
lrwxrwxrwx 1 root root 14 Aug 26 22:53 libcrypto.so.0.9.8 -> libcrypto.so.4
lrwxrwxrwx 1 root root 38 Aug 26 22:36 libcrypto.so.4 -> /lib/i386-linux-gnu/libcrypto.so.0.9.8
lrwxrwxrwx 1 root root 49 Aug 26 22:36 libiniparser.so.0 -> /usr/lib/x86_64-linux-gnu/samba/libiniparser.so.0

예를 들어, 위 출력에서 ​​lib 및 libiniparser.so.0에 대한 링크는 /usr/lib 또는 /usr/local/lib에 포함되어 있는지 여부에 관계없이 제대로 작동합니다. 가장 간단한 설명은 ldconfig가 라이브러리 파일 이름 항목 전환을 특별히 방지한다는 것입니다. 그러나 그 이론은 이것이 /usr/lib에서 작동하는 이유를 설명하지 않습니다.

어떤 통찰력이라도 대단히 감사하겠습니다. 감사합니다.

답변1

새 위치에 대한 디렉터리 경로가 포함된 /etc/ld.so.conf.d에 다른 구성 파일을 추가하여 더 많은 경로를 추가한 다음 캐시를 다시 작성하거나 재부팅할 수 있습니다. 또는 /sbin/ldconfig 명령을 사용하여 이 방법을 수행할 수 있습니다.

관련 정보