# OpenCV Contrib编译报glob错误
# 报错
/usr/bin/ld: ../../lib/libopencv_sfm.so.4.2.0: undefined reference to `google::InitVLOG3__(google::SiteFlag*, int*, char const*, int)'
collect2: error: ld returned 1 exit status
make[2]: *** [modules/sfm/CMakeFiles/opencv_test_sfm.dir/build.make:249: bin/opencv_test_sfm] Error 1
make[1]: *** [CMakeFiles/Makefile2:7455: modules/sfm/CMakeFiles/opencv_test_sfm.dir/all] Error 2
make: *** [Makefile:163: all] Error 2
# 原因
本机默认安装的GLOG版本还OpenCV_Contrib中使用的版本对不上。
# 解决办法
# 方法1
卸载掉本机默认安装的glob
sudo apt-get remove glob
重新安装glog
- 先从
github上拉glob源代码
git clone https://github.com/google/glog.git
- 切换到旧版本分支
git checkout v0.5.0-rc2
- 参考
glog安装说明,使用cmake编译
cmake -S . -B build -G "Unix Makefiles"
cmake --build build --target install
安装完成后,重新编译OpenCV Contrib模块即可。
注意,编译glob需要的最小版本cmake是3.21.0,如果版本过低的话可以从这里下载安装cmake。
压缩包解压后,在/usr/bin下新建一个链接即可开始使用cmake了。
sudo ln -s cmake-3.28.0-rc5-linux-x86_64/bin/cmake cmake
# 方法2
使用apt安装glog
sudo apt-get install -y libgoogle-glog-dev
# Reference
1.https://github.com/opencv/opencv_contrib/issues/2211 (opens new window)