기본 공유 라이브러리 경로를 결정하는 방법은 무엇입니까?

기본 공유 라이브러리 경로를 결정하는 방법은 무엇입니까?

일부 배포판은 이고 /lib64일부는 /lib/x86_64-linux-gnu이며 아마도 다른 형식이 있을 수도 있습니다. Bash에서 이를 결정하는 통일된 방법이 있습니까?

답변1

먼저 지정된 경로의 대상을 파악해야 합니다. 다음 중 하나일 수 있습니다.

  1. 설치된 라이브러리를 검색할 위치입니다.
  2. 링커나 런타임 로더에 표시되도록 라이브러리를 설치할 위치입니다.
  3. 배포 정책을 준수하기 위해 라이브러리를 어디에 설치해야 할까요?

(3)의 경우 유일한 진실 소스는 사람이 읽을 수 있는 문서인 배포 정책 설명입니다. 어느 위치가 선호되는 위치이고 어느 위치가 이전 위치인지 알 수 없기 때문에 캐시 등에서 이를 확인할 수 없습니다. /etc/ld.so.conf라이브러리 를 계산하여 힌트를 얻을 수 있지만 이는 확실히 쉘 스크립트에서는 작동하지 않습니다.ldconfig

(1)과 (2)의 경우 읽고 해석합니다 /etc/ld.so.conf(그러나 다른 파일이나 디렉터리 내용에 대한 와일드카드 참조가 포함되는 경우가 많기 때문에 이는 사소한 일이 아닙니다). ldconfig -p나열된 디렉터리의 출력을 구문 분석하고 누적할 수도 있습니다 . 그러나 기존 라이브러리와의 충돌 가능성과 라이브러리 세트를 변경한 후 ldconfig 캐시를 다시 만들어야 한다는 점에 유의하세요.

답변2

일반적으로 이 정보는 를 읽어보면 얻을 수 있습니다 /etc/ld.so.conf. 이 파일에는 내 시스템에 다른 파일이 포함될 수 있습니다 /etc/ld.so.conf.d.

여러 디렉터리가 검색됩니다. 또한 이는 ld.so바이너리에 내장되어 있고 특정 아키텍처 및 ABI에 대해 일반적으로 균일한 동적 링커에 대한 경로에 영향을 미치지 않습니다 .

관련 정보