앞에 쓰여진
저자의 운영 환경
1. 문제 설명
프로그램을 컴파일할 때
/usr/bin/ld: /usr/lib/libceres.so.1.14.0: undefined reference to `google::kLogSiteUninitialized'
collect2: error: ld returned 1 exit status`
둘, 해결책
glog
이 문제의 원인은 버전이 잘못되었기 때문입니다 . 새 버전은 glog
변수를 제거합니다 google::kLogSiteUninitialized
.
솔루션 1(자체 솔루션)
수정 의 구성을 위해 CMakeLists.txt
glog의 대상 위치를 먼저 설정하십시오:
원본CMakeLists.txt
set(GFLAGS_PREFER_EXPORTED_GFLAGS_CMAKE_CONFIGURATION TRUE)
set(GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION TRUE)
로 변경:
set(GFLAGS_PREFER_EXPORTED_GFLAGS_CMAKE_CONFIGURATION FALSE)
set(GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION FALSE)
솔루션 2
glog
버전 교체 :
(여기에 있는 지침은 참조 링크 [2] 에서 제공됩니다 .)
시스템에 설치된 원래 glog를 제거한 다음 이전 버전의 glog를 설치합니다. 여기에 설치된 버전은 다음과 같습니다 v0.5.0-rc2
.
git clone https://github.com/google/glog.git
cd glog/
git checkout v0.5.0-rc2
mkdir build && cd build
cmake ..
sudo make -j12 install
참조 링크
[1] 샤오쉬. google::kLogSiteUninitialized #178 [EB/OL]에 대한 정의되지 않은 참조. https://github.com/MIT-SPARK/Kimera-VIO/issues/178, 2021-10-14/2023-01-14.
[2] 목장. cmake #543 [EB/OL]을 사용한 `google::kLogSiteUninitialized'에 대한 정의되지 않은 참조. https://github.com/google/glog/issues/543, 2021-04-20/2023-01-14.