[1. 개요]
리눅스 기준, 빌드 결과물이 공유라이브러리 (.so) 파일에 의존하는 경우
특히 boost 나 tbb 등 기본적으로 시스템에 설치 된 라이브러리가 아니라 별도 라이브러리 인 경우
프로그램 시작 시, 필요 한 공유 라이브러리를 로드 하지 못하여 실행하지 못할 수 있음.
윈도우의 경우 현재 디렉터리를 기준으로 찾는 시늉(?) 이라도 하는 것 같던데,
리눅스는 그렇지 않음.
여기서는 기본적으로 산출물이 공유 라이브러리를 찾는 기준을 설정하는 법을 정리한다.
[2. RPATH]
readelf -d "mybinary" 를 살펴 보면 RPATH 항목이 있음.
이 항목은 cmake 로 프로젝트 설정 시
-DCMAKE_SKIP_BUILD_RPATH=TRUE 로 설정하면 제거 할 수 있으나,
서비스 환경에 배포 시, 의존 라이브러리를 찾는 수단으로 사용 할 수 있음
CMakeLists.txt 에서 set_target_properties 를 이용하여 임의의 파일 경로를 설정할 수 있다.
set_target_properties(mybinary
PROPERTIES
BUILD_WITH_INSTALL_RPATH TRUE
INSTALL_RPATH "/my/dep/lib/path"
)
'C++ > CMake' 카테고리의 다른 글
CMake command 정리 2 (0) | 2023.06.07 |
---|---|
리눅스 CMake 설치 (0) | 2023.01.04 |
CMake command 정리 (0) | 2022.03.06 |