Ubuntu16.04 GPU版Caffe编译报错:OpenCV版本冲突解决方案咨询
解决Caffe编译时OpenCV版本冲突的问题
这个警告其实很好理解——你的系统里同时装了OpenCV 2.4和4.0两个版本,Caffe编译时默认盯上了2.4版,但链接器扫到系统里还有4.0的库,怕两个版本的API不兼容搞出问题,所以给你提了个醒。下面给你几个靠谱的解决思路,按需选就行:
方法一:让Caffe适配OpenCV 4.0编译
如果想用上新版OpenCV,只需要改改Caffe的配置文件就行:
- 先确认你已经装好了OpenCV 4.0的开发包(比如对应版本的
libopencv-dev) - 回到Caffe根目录,复制默认配置文件并修改:
cp Makefile.config.example Makefile.config - 打开
Makefile.config,找到OPENCV_VERSION := 3这一行,把它改成OPENCV_VERSION := 4 - 再检查下文件里的
INCLUDE_DIRS和LIBRARY_DIRS,确保包含OpenCV 4.0的头文件和库路径。默认安装的话,这部分可以写成:INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/opencv4 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu - 最后清理之前的编译缓存,重新编译:
make clean make all -j$(nproc)
方法二:临时屏蔽OpenCV 4.0,用2.4版本编译
要是不想折腾适配新版,只想用Caffe默认的2.4版本编译,可以临时让系统优先找到2.4的库:
- 先找到OpenCV 2.4的库路径,一般在
/usr/lib/x86_64-linux-gnu或者/usr/local/lib下(找带opencv2.4的文件夹) - 编译前设置环境变量,让链接器先搜2.4的库:
(这里路径要换成你实际找到的OpenCV 2.4库路径)export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/opencv2.4:$LD_LIBRARY_PATH - 同样先清缓存再编译:
编译完要是想恢复环境变量,重启终端或者执行make clean make all -j$(nproc)unset LD_LIBRARY_PATH就行。
方法三:卸载其中一个OpenCV版本
如果系统里不需要同时留两个版本,直接卸载多余的那个最省心:
- 想留OpenCV 4.0,就卸载2.4版本:
之后按方法一修改Caffe配置再重新编译。sudo apt-get remove libopencv-core2.4 libopencv-imgproc2.4 sudo apt-get autoremove - 想留OpenCV 2.4,就卸载4.0版本:
之后直接重新编译Caffe就行。sudo apt-get remove libopencv-core4.0 libopencv-imgproc4.0 sudo apt-get autoremove
注意哦,卸载前最好确认下其他程序有没有依赖这个版本的OpenCV,别把别的软件搞崩了。
内容的提问来源于stack exchange,提问作者pymat
相关产品推荐
相关产品推荐

