# 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)