ldconfig
두 가지 흥미로운 옵션이 있습니다.
-f conf
Use conf instead of /etc/ld.so.conf.
-C cache
Use cache instead of /etc/ld.so.cache.
나는 /etc/ld.so.conf
내 자신의 홈 디렉토리에 복사 를 시도 하고 로컬 라이브러리에 대한 경로를 포함하도록 편집했습니다 /home/syockit/local/usr/lib
.
ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache
그런 다음 라이브러리가 캐시되었는지 확인하기 위해
ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache -p | less
그리고 시스템 라이브러리를 포함하여 모든 라이브러리를 포함합니다.
이제 기본 링커에서이 두 가지를 사용하고 싶습니다. 그러나에서 man ld.so
custom .conf
또는 을 사용할 수 있다는 언급은 없습니다 .cache
. 그렇다면 위의 두 가지 옵션의 요점은 무엇 ldconfig
입니까?
답변
다른 방법으로도 같은 것을 성취 할 수는 있지만 귀하의 질문에 대한 대답은 아니오라고 생각합니다.
man ld.so에서 custom .conf 또는 .cache를 사용할 수 있다는 언급이 없습니다.
사실, $LD_LIBRARY_PATH
및에 대한 언급이 있으며 --library-path
, 전자가 더 일반적으로 유용합니다.
위의 두 가지 옵션의 요점은 무엇
ldconfig
입니까?
따라서 시스템을 덮어 쓰지 않고 시스템 conf를 사용할 필요없이 캐시를 만들 수 있습니다.
답변
/etc/ld.so.conf
(동적 로더)가 ldconfig
아닌 ld.so
( 캐시 생성 프로그램) 만 읽습니다 . 시스템 기본값과 다른 캐시를 생성하려는 경우 구성 파일의 위치를 변경할 수 있습니다.
/etc/ld.so.cache
이 읽고 ld.so
다른 위치에서 읽을 수 없습니다. 그럼에도 불구하고 다른 출력 위치를에 전달하는 것이 유용 할 수 있습니다 ldconfig
. 가장 일반적인 사용 사례는 아마도 chroot 환경 일 것 입니다. 당신이 사용할 수있는 ldconfig -r /some/root
실행하는 ldconfig
대체 루트에, 당신은 (루트가 내부 또는 외부)을 원하는 목적지까지 출력을했습니다. 출력을 출력 /some/root/etc/ld.so.cache
하거나 나중에 복사해야합니다. ldconfig
권한이없는 사용자 (에 쓸 수없는 사용자) 로 실행 /etc/ld.so.cache
한 다음 나중에 파일을 제자리로 옮기려는 경우와 같이 상당히 모호한 사용 사례 가 있습니다 .