Sophus 컴파일 오류

CmakeLists.txt 호출 Sophus 구문은 다음과 같습니다.
 FIND_PACKAGE(sophus REQUIRED)
 TARGET_LINK_LIBRARIES(${PROJECT_NAME}
     ${Sophus_LIBRARIES})

Sophus를 컴파일하는 동안 다음과 같은 오류가 발생했습니다.
../lib/libmyslam.so: undefined reference to `Sophus::SO3::SO3(double, double, double)'
../lib/libmyslam.so: undefined reference to `Sophus::SE3::operator*(Eigen::Matrix const&) const'
../lib/libmyslam.so: undefined reference to `Sophus::SE3::SE3(Sophus::SO3 const&, Eigen::Matrix const&)'
../lib/libmyslam.so: undefined reference to `Sophus::SE3::operator*(Sophus::SE3 const&) const'
../lib/libmyslam.so: undefined reference to `Sophus::SE3::log() const'
../lib/libmyslam.so: undefined reference to `Sophus::SE3::operator=(Sophus::SE3 const&)'
../lib/libmyslam.so: undefined reference to `Sophus::SE3::inverse() const'
../lib/libmyslam.so: undefined reference to `Sophus::SE3::SE3()'
../lib/libmyslam.so: undefined reference to `Sophus::SE3::SE3(Sophus::SE3 const&)'
collect2: error: ld returned 1 exit status

원인 분석: Sophus를 설치할 때 lib 파일인'libSophus.so'가/usr/local/lib/libSophus에 나타납니다.(본인이 컴파일할 때 마지막으로sudomake install을 실행했기 때문에 시스템 폴더에 이lib 파일이 있습니다.)FIND_ 실행 시PACKAGE(sophus REQUIRED) 시 libSophus.so Sophus_LIBRARIES, 그러나 cmake가 연결되지 않았기 때문에 이 오류가 발생했습니다.
해결 방법: 명시적으로 Sophus_LIBRARIES는 libSophus에 연결됩니다.so,CMakeLists.txt 코드는 다음과 같습니다.
FIND_PACKAGE(sophus REQUIRED)
set(Sophus_LIBRARIES libSophus.so)
TARGET_LINK_LIBRARIES(${PROJECT_NAME}
     ${Sophus_LIBRARIES})

참고: set 뒤에는 "{}"대신 괄호 () 가 있습니다.

좋은 웹페이지 즐겨찾기