Caffe 编译错误记录

来源:互联网 发布:体脂称 知乎 编辑:程序博客网 时间:2024/06/04 19:50

Caffe 编译错误记录

装了opencv 3之后,以前可以编译成功的的caffe总是出现错误,现记录下来,作为备份:

  • 1、build_release/lib/libcaffe.so:对‘cv::imdecode(cv::_InputArray const&, int)’未定义的引用
    对于各种cv出错:
    解决方法:
    修改Makefile:
    LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial matio opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
    下次编译之前要 make clean

  • 2、make: /usr/local/bin/mexext:命令未找到
    sudo ln -s /usr/local/MATLAB/R2016b/bin/mexext /usr/local/bin

警告: 您使用的 gcc 版本为 ‘5.4.0’。不支持该版本的 gcc。MEX 当前支持的版本为 ‘4.9.x’。有关当前支持的编译器列表,请参阅: http://www.mathworks.com/support/compilers/current_release。
不管它。

  • 3、m//home/yali/anaconda2/lib/libpng16.so.16:对‘inflateValidate@ZLIB_1.2.9’未定义的引用
    sudo ln -s /home/yali/anaconda2/lib/libpng16.so.16 libpng16.so.16 (方法不行)
    正确解决方法:
    在 Makefile.config 中,加入下一句
    LINKFLAGS := -Wl,-rpath,$(HOME)/anaconda/lib

  • 4、python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: No such file or directory
    解决方法:没装numpy的先安装
    sudo apt-get install python-numpy
    然后 sudo find / -name numpy,显示
    /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy
    /usr/share/numpy
    /usr/include/python2.7/numpy
    /usr/include/numpy
    /usr/lib/python2.7/dist-packages/Cython/Includes/numpy\
    然后对照 Makefile.config
    将第二行加一个local
    PYTHON_INCLUDE := /usr/include/python2.7 \
    /usr/local/lib/python2.7/dist-packages/numpy/core/includ

  • 5、ImportError: No module named caffe
    解决方法1:
    首先新建一个py文件,命名为_init_paths.py 里面写入如下代码:

import os.path as ospimport sysdef add_path(path):    if path not in sys.path:        sys.path.insert(0, path)this_dir = osp.dirname(__file__)#Add caffe to PYTHONPATHcaffe_path = osp.join(this_dir, '..', 'caffe', 'python')  #注意路径:this_dir表示当前路径,‘..’返回上一层的caffe所在的路径,根据自己的caffe所在路径修改add_path(caffe_path)

每次使用caffe的时候在 import caffe 前面加上 import _init_paths 即可:

import _init_paths # _init_paths.py 和当前命令放在同一路径下import caffe

解决方法2:

caffe_root = '/home/mmt/Desktop/caffe/)'  import syssys.path.append("/home/mmt/Desktop/caffe/python")sys.path.append("/home/mmt/Desktop/caffe/python/caffe")import caffe
  • 6、编译Fast -rcnn时的错误

./include/caffe/util/cudnn.hpp:124:41: error: too few arguments to function
‘cudnnStatus_t cudnnSetPooling2dDescriptor(cudnnPoolingDescriptor_t, cudnnPoolingMode_t, cudnnNanPropagation_t, int, int, int, int, int, int)’
解决方法:

1.将./include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudnn.hpp.2.将./src/caffe/layer里的,所有以cudnn开头的文件,例如cudnn_lrn_layer.cu,cudnn_pooling_layer.cpp,cudnn_sigmoid_layer.cu。rbgirshick的py-faster-rcnn实现,因为其cudnn实现为旧版本的实现,所有出现了以上问题.然后 make clean,再重新编译

src/caffe/layers/cudnn_softmax_layer.cpp:6:48:
fatal error: caffe/layers/cudnn_softmax_layer.hpp: No such file or directory

将新版本caffe中的 incliude里面的layer文件夹移过去  

7、ImportError: libprotobuf.so.8: cannot open shared object file: No such file

解决方法:http://blog.csdn.net/yl33489/article/details/73605398http://blog.csdn.net/hailong0715/article/details/52057873说明你使用的protobuf要么是没有编译过,所以找不到对应的库文件,要么就是您编译之后的安装路径没有假如到配置中所以报错。如果是第一种,请先下载protobuf-2.5.0,我已经上传到网盘http://pan.baidu.com/s/1pKAgqp1如果是第二种情况:则需要创建新文件:/etc/ld.so.conf.d/libprotobuf.conf ,然后在其中加入内容:/usr/local/lib

8、TypeError: slice indices must be integers or None or have an index method
说是numpy版本的问题。

解决方法:sudo pip install -U numpy==1.11.0 python -c "import numpy; print numpy.__version__"

9、ImportError: numpy.core.multiarray failed to import

重新 make fasterrcnn/lib

10、SystemError: NULL result without error in PyObject_Call

解决方法:  sudo apt-get install python-yaml

10、./include/caffe/util/cudnn.hpp:8:34: fatal error: caffe/proto/caffe.pb.h: No such file or director

解决方法:sudo pip install protobuf --upgrade -i http://pypi.douban.com/simple sudo pip install pillow --upgrade -i http://pypi.douban.com/simple