背景:
我希望同时使用Caffe和Digits,这样我就可以在 Digits 框架内或外部使用 Caffe。
但是,对于一个特定的项目,我要求 Caffe 使用 OpenCV 3 而不是 OpenCV 2.4,Digits 默认安装它。本项目使用 Digits 外部的 Caffe,不使用 Digits 框架。
看来,通过安装 Digits,我的 OpenCV 3 安装被 OpenCV 2.4 “破坏”,这现在导致我原来的 Caffe 安装出现问题。
为了让事情更清楚,下面列出了我已采取的步骤。
从全新的 Ubuntu 14.04 安装:
- 根据Ubuntu 安装指南安装 Caffe 依赖项(OpenCV 除外)
- 将 OpenCV 3 从源安装到
/usr/local
- 测试OpenCV安装
- 演示工作正常,包括 OpenCV 3 特定代码
- 编译的 Caffe,设置
Makefile.config
为使用 OpenCV 3 - 经过测试的 Caffe 安装
- 所有测试均通过,演示运行良好
- 根据安装指南安装的数字
- 安装程序脚本默认安装 Caffe 和 OpenCV 2.4
- OpenCV 3 被 OpenCV 2.4 破坏(?)
- 执行 Digits入门指南中的步骤
- 所有步骤都成功
- 怀疑OpenCV冲突,所以尝试编译一个Caffe demo
- 发生与 OpenCV 3.0 和 2.4 冲突有关的错误——详情如下。
编译命令:
g++ 分类.cpp -o 分类 -I/home/josh/software/caffe/include/ -L/home/josh/software/caffe/build/lib/ -lcaffe -I/usr/local/cuda/include -L/ usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand -I/home/josh/software/cudnn/include/ -L/home/josh/software/cudnn/lib64/ -lcudnn -L/usr/lib/ x86_64-linux-gnu/ -lglog -L/usr/local/lib -lboost_system -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -DUSE_OPENCV
错误信息:
/usr/bin/ld: 警告:/home/josh/software/caffe/build/lib//libcaffe.so 需要的 libopencv_core.so.3.0,可能与 libopencv_core.so.2.4 冲突 /usr/bin/ld: /tmp/ccHaWcOl.o:未定义对符号'_ZN2cv6String10deallocateEv'的引用//usr/local/lib/libopencv_core.so.3.0:添加符号时出错:命令行collect2中缺少DSO:错误:ld返回1退出状态
问题:
- 如何在不破坏 Caffe/Digits 安装的情况下最好地解决 OpenCV 版本冲突?
- 我是否需要删除 OpenCV 并重新安装 Caffe 和 Digits?
- 如果是这样,我需要做些什么来防止 OpenCV 版本冲突,同时仍然允许 Caffe(使用 OpenCV 3)和 Digits 并排工作?