编译报错 undefined reference to `google::kLogSiteUninitialized‘ 的参考解决方法

写在前面

笔者的运行环境

一、问题描述

编译程序时

/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.

解决方法一(自己的解决方法)

修改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)

解决方法二

更换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] shaoxh. undefine reference to google::kLogSiteUninitialized #178 [EB/OL]. https://github.com/MIT-SPARK/Kimera-VIO/issues/178, 2021-10-14/2023-01-14.
[2] rancheng. undefined reference to `google::kLogSiteUninitialized’ with cmake #543 [EB/OL]. https://github.com/google/glog/issues/543, 2021-04-20/2023-01-14.

猜你喜欢

转载自blog.csdn.net/qq_39779233/article/details/130163184