여러 버전의 라이브러리가 있는 경우 시스템에서 어떤 버전을 사용합니까?

여러 버전의 라이브러리가 있는 경우 시스템에서 어떤 버전을 사용합니까?

/usr/lib64/libfreetype.so 버전이 1.4인 freetype 라이브러리가 이미 설치되어 있고 /usr/local/lib/libfreetype.so에 컴파일하고 설치한 이 라이브러리의 다른 버전이 있다고 가정해 보겠습니다. 프리타입이 필요한 소프트웨어를 빌드할 때 빌드 시스템(make)은 어떤 버전을 사용할지 어떻게 알 수 있나요?

답변1

TL;DR 버전: 상황에 따라 다릅니다.

  • OS: 라이브러리 검색에 사용되는 경로를 등록하는 OS 특정 환경( LD_LIBRARY_PATH) 구성 파일 또는 명령(예: ) 이 있을 수 있습니다 .ldconfig(8)
  • 빌드 시스템: 있을 수 있음환경 변수LDFLAGS명령줄 플래그 또는 구성 파일 설정 등 ; 시스템(또는 사용자)이 사용자 정의 경로 아래에 ncurses를 가지고 있을 때 mutt사용됩니다 . --with-curses=[dir]이는 빌드 시스템(또는 의 버전 make)에 따라 다르며 autoconf 또는 cmake 파일에 수동으로 작성해야 할 수도 있습니다.
  • 빌드 후 구성: patchelf(사용 가능한 경우)와 같은 도구를 사용하면 다른 라이브러리를 선택하거나 검색 경로를 변경할 수 있습니다.

답변2

libxxx.so일반적으로 이름에 버전이 포함된 공유 라이브러리 파일에 대한 심볼릭 링크입니다.

를 사용하여 링크하면 -lxxxlibxxx.so파일이 사용됩니다.

다른 버전에 연결하려면 라이브러리의 전체 경로 이름을 지정해야 합니다.

관련 정보