![여러 버전의 라이브러리가 있는 경우 시스템에서 어떤 버전을 사용합니까?](https://rvso.com/image/134431/%EC%97%AC%EB%9F%AC%20%EB%B2%84%EC%A0%84%EC%9D%98%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EA%B0%80%20%EC%9E%88%EB%8A%94%20%EA%B2%BD%EC%9A%B0%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C%20%EC%96%B4%EB%96%A4%20%EB%B2%84%EC%A0%84%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
/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
일반적으로 이름에 버전이 포함된 공유 라이브러리 파일에 대한 심볼릭 링크입니다.
를 사용하여 링크하면 -lxxx
이 libxxx.so
파일이 사용됩니다.
다른 버전에 연결하려면 라이브러리의 전체 경로 이름을 지정해야 합니다.