编译caffe时报错
ild_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&, int)
报错原因:
caffe默认使用opencv2.X版本,但是我的机器上安装的是opencv 3.2.0,这个3.2.0,也是默认装的,如果你按照教材,重新装最新的4.0以上的。这里也会出这个问题。这里可以通过查看系统当前opencv版本.
pkg-config --modversion opencv
上面这个问题是直接修改完配置文件Makefile.config后,直接在caffe文件下make出现的问题。
可能的解决方法包括:
- Makefile.config中OPENCV_VERSION := 3取消注释(亲测可用)
- Makefile中找到LIBRARIES(在PYTHON_LIBRARIES := boost_python python2.7 前一行)并修改为:
LIBRARIES += glog gflags protobuf leveldb snappy \
lmdb boost_system hdf5_hl hdf5 m \
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
还可以通过cmake来避免这个错误。
在通过在caffe中的build目录下cmake …编译好的输出信息查看caffe里面的opencv的版本,应该会是你重新安装的4.0版本,所以这里编译就一直会报错,这里的报错是caffe/src/caffe/layer/window_data_layer.cpp,里面一个变量混淆。这里如果按照他的提示改的话,也解决不了。因为本质的问题是,opencv 版本的问题。这里我们只需要卸载,4.0版本的,让caffe里面的opencv和系统当中的保持一致就可以解决这个问题了。
每次修改文件后需要清空build文件夹用rm -rf ./build/*,然后重新cmake
mkdir build
cd build
cmake ..
make all -j12
make runtest -j8
网上提供了很多解决的办法,但是都没有解决我的问题,所以大家可以查看自己的问题是不是和我一样。我弄了一个通宵才解决,贴出来也是为了帮助有相同问题的朋友。因为我没看到网上有关于我这个问题的解决的帖子。
这里提供issue地址:https://github.com/BVLC/caffe/issues/2348