ldconfig와 ld.so.cache의 관계

ldconfig와 ld.so.cache의 관계

컴퓨터를 다시 시작한 후에도 ld.so.cache정보가 여전히 남아 있으므로 질문은 다음과 같습니다.

  1. 정보는 항상 거기에 저장되나요? 재부팅 후 삭제 되었나요? RAM이나 브라우저 캐시가 삭제된 것처럼요?

  2. 일부 공유 라이브러리가 설치된 앱을 제거하면 해당 앱의 정보도 제거된다는 것을 알고 있나요 ld.so.cache? 정보를 사용하면 ldconfig삭제되나요 ? 실제로 어떻게 작동하나요?

  3. 프로그램을 설치하는 경우 내 컴퓨터는 추가된 새 라이브러리를 사용하는지 어떻게 알 수 있나요? apt-get install달리고 나면 ldconfig?

답변1

Linux 프로그램은 공유 객체라는 라이브러리를 사용합니다. 공유 객체의 확장자는 .so입니다. ls명령 실행의 SO 사용량 보기ldd /bin/ls

  1. 기본적으로 라이브러리는 /lib /usr/lib 및 /usr/local/lib(32/64비트의 경우 /lib32, /lib64)에 저장됩니다. 다른 라이브러리를 찾을 수 있는 정보는 에 저장됩니다 /etc/ld.so.conf.d/. 특정 라이브러리에 대한 경로가 포함된 단일 .conf 파일이 있습니다. 즉, /opt/foo/lib/etc/ld.so.conf.d/에서 조회하기 때문에 ldconfig/etc/ld가 생성됩니다. 매우 느린 .so.cache 파일입니다. 이는 조회 속도를 높이기 위한 파일의 바이너리 버전입니다. 먼저 첫 번째 질문에 답해보자. 아니요, 파일을 보관하세요.

  2. 예, apt-get 또는 dpkg(?)가 ldconfig를 트리거합니다. 작동 방식 - 1을 참조하세요.

  3. 예, 1을 참조하세요.

나는 그것이 맞았기를 바랍니다. 저를 정정해 주시기 바랍니다.

답변2

apt-get그리고 dpkg둘 다 ldconfig캐시 재구축을 호출합니다.

각 배치 작업이 끝날 때 이 작업이 수행되는 것으로 생각되지만 확실하지는 않습니다.

캐시에서 특정 데이터를 제거하는 방법은 없다고 생각합니다. 단지 재구축하는 것뿐입니다. 예를 들면 다음과 같습니다.

rm /etc/ld.so.cache
ldconfig

이를 사용하여 ldconfig -p캐시된 콘텐츠를 검사할 수 있습니다.

내 시스템에서는 ldconfig재부팅할 때마다 호출되지만 /etc/캐싱에 사용하면 매번 처음부터 생성되지 않으므로 원하는 경우 직접 다시 작성해야 합니다.

일부 라이브러리를 수동으로 삭제하면 다시 빌드해야 합니다.

관련 정보