ldconfig -p 를 이용한 공유 라이브러리 캐시 확인
이전 단계에서는 find 명령어를 사용하여 파일 시스템 전체에서 라이브러리를 검색했는데, 이는 다소 느릴 수 있습니다. 공유 라이브러리를 찾는 과정을 가속화하기 위해 리눅스 시스템은 보통 /etc/ld.so.cache에 위치한 캐시 파일을 유지 관리합니다. 이 캐시에는 표준 시스템 디렉토리에서 사용 가능한 공유 라이브러리의 컴파일된 목록이 포함되어 있어, 프로그램이 의존성 라이브러리를 훨씬 빠르게 로드할 수 있게 해줍니다.
ldconfig 명령어는 이 캐시를 관리하는 주요 도구입니다. 현재 라이브러리 캐시의 내용을 확인하려면 -p (print) 옵션을 사용합니다.
캐시에 등록된 모든 라이브러리를 표시하려면 다음 명령을 실행하세요.
ldconfig -p
일반적인 시스템에는 수많은 공유 라이브러리가 있으므로 출력이 매우 길 것입니다. 이 명령어는 발견된 라이브러리의 총 개수를 나열한 다음 각 항목을 출력합니다. 출력 결과의 일부 예시는 다음과 같습니다.
1234 libs found in cache `/etc/ld.so.cache'
libzstd.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzstd.so.1
libz.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so.1
libz.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so
libyield.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libyield.so.2
...
libc.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libc.so.6
...
각 줄은 라이브러리 이름, 아키텍처 및 ABI(예: libc6,x86-64), 그리고 라이브러리 파일의 전체 경로를 보여줍니다.
전체 목록을 스크롤하는 번거로움을 피하기 위해 출력을 grep으로 전달하여 특정 라이브러리를 검색할 수 있습니다. 우리가 계속 살펴보고 있는 libc.so.6 항목을 찾아보겠습니다.
ldconfig -p | grep libc.so.6
그러면 목록이 필터링되어 libc.so.6과 관련된 항목만 표시됩니다.
libc.so.6 (libc6,x86-64, OS ABI: Linux 3.2.0) => /lib/x86_64-linux-gnu/libc.so.6
보시다시피, 이는 파일 시스템 전체를 검색하는 것보다 캐시된 라이브러리의 위치를 찾는 훨씬 빠르고 직접적인 방법입니다. 출력에는 라이브러리 이름과 경로뿐만 아니라 아키텍처 정보 (libc6,x86-64) 와 OS ABI 호환성 (OS ABI: Linux 3.2.0) 정보도 포함됩니다. 하지만 이 캐시는 실시간으로 자동 업데이트되지 않습니다. 새로운 라이브러리를 설치했다면 시스템이 이를 찾을 수 있도록 캐시를 직접 업데이트해야 합니다. 다음 단계에서 그 방법을 배워보겠습니다.