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

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

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

답변1

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

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

답변2

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

링크를 사용하는 경우 -lxxx이 파일을 사용하세요.libxxx.so

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

관련 정보