`google::kLogSiteUninitialized'에 대한 컴파일 오류 정의되지 않은 참조에 대한 참조 솔루션

앞에 쓰여진

저자의 운영 환경

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.

Guess you like

Origin blog.csdn.net/qq_39779233/article/details/130163184