在安装Caffe时遇到各种各样的错误,汇总一下。按照遇到顺序列出来吧。
错误1:编译caffe时出现如下错误,直接上图
原因:缺少依赖项
解决办法:
make clean #删除编译错误的caffe
sudo apt-get install libatlas-base-dev #安装依赖库,然后重新编译caffe
错误3:make pycaffe,如果出现“make: Nothing to be done for `pycaffe’.”
解决办法:
打开文件
sudo gedit ~/.bashrc
将下面的
$export PYTHONPATH=/home/caffe/python:$PYTHONPATH
//注意:/home/caffe/python这是你的caffe的路径下面的python
添加到文件末尾,完成后记得要
source ~/.bashrc
错误2:同样是执行make pycaffe时,出现下列错误
原因:numpy可能已经是安装的,anaconda2里面有,python中import numpy也没有问题,但就是在此处报错
解决办法:执行下面的命令后重新执行make pycaffe
sudo apt-get install python-numpy
错误4: src/caffe/common.cpp:1:28: fatal error: boost/thread.hpp: 没有那个文件或目录
如下图
原因:安装依赖库libboost-all-dev时出现的问题
解决办法:参考以下链接:https://blog.csdn.net/ytusdc/article/details/84581163
错误5: nvcc fatal : Unsupported gpu architecture 'compute_20'
原因: 此时环境,Ubuntu16.04, cuda9.2, cudnn7.0, 应该是gpu的architecture不支持compute_20
解决方法: caffe目录下的, Makefile.config 文件中 CUDA_ARCH ,把上面的包含compute_20的两行注释掉就好
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_61,code=compute_61
错误6:src/caffe/layers/cudnn_relu_layer.cpp:16:45: error: ‘activ_desc_’ was not declared in this scope
cudnn::createActivationDescriptor<Dtype>(&activ_desc_, CUDNN_ACTIVATION_RELU);
src/caffe/layers/cudnn_relu_layer.cpp: In member function ‘virtual void caffe::CuDNNReLULayer<Dtype>::LayerSetUp(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&)’:
src/caffe/layers/cudnn_relu_layer.cpp:16:45: error: ‘activ_desc_’ was not declared in this scope
cudnn::createActivationDescriptor<Dtype>(&activ_desc_, CUDNN_ACTIVATION_RELU);
解决方法:将./include/caffe/layers的,所有以cudnn开头的文件,例如cudnn_conv_layer.hpp,cudnn_lcn_laye.hpp</p> 都替换成最新版的caffe里的相应的同名文件
错误7、src/caffe/test/test_smooth_L1_loss_layer.cpp:11:35: fatal error: caffe/vision_layers.hpp: No such file or directory
src/caffe/test/test_smooth_L1_loss_layer.cpp:11:35: fatal error: caffe/vision_layers.hpp: No such file or directory
解决方法:
找到文件$CAFFE_ROOT/src/caffe/test/test_smooth_L1_loss_layer.cpp
删除第十一行 #include "caffe/vision_layers.hpp"
错误7:
(1) ./include/caffe/common.hpp:5:27: fatal error: gflags/gflags.h: No such file or directory
解决办法:sudo apt-get install libgflags-dev
(2) ./include/caffe/util/mkl_alternate.hpp:14:19: fatal error: cblas.h: No such file or directory
解决办法:sudo apt-get install libblas-dev
(3) ./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: No such file or directory
解决办法:在Makefile.config找到以下行并添加蓝色部分
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
(4) ./include/caffe/util/db_lmdb.hpp:8:18: fatal error: lmdb.h: No such file or directory
解决办法:sudo apt install liblmdb-dev
(5) /usr/bin/ld: cannot find -lcblas
/usr/bin/ld: cannot find -latlas
解决办法:sudo apt install libatlas-base-dev
错误8:
/usr/bin/ld: cannot find -lopenblas
在软件编译过程中,经常会碰到类似这样的编译错误:
/usr/bin/ld: cannot find -lxxx 的解决办法
这表示找不到库文件 lopenblas.so,若是其它库文件,则是 cannot find -lxxx 了,其中 xxx 是库文件的名字。
其命名规则是:lib+库名(即xxx)+.so。
会发生这样的原因有以下三种情形:
1 系统没有安装相对应的lib
2 相对应的lib版本不对
3 lib(.so档)的symbolic link 不正确,没有连结到正确的函式库文件(.so)
一般我们都是遇到了第三种情形,虽然安装了指定的库文件,但是没有进行正确的连接。
对应第一二种情况,我们可以直接用apt-get来解决问题。
apt-get install libxxx-dev
第三种情形的话,我们先用locate和find来找到指定的lib文件,查看链接文件是否正确的指向了我们希望的lib,如果不是,用 ln -sf */libxxx.so.x */libxxx.so 指令修改它。
连接以后,输入ldconfig来让动态链接库供系统共享。
具体可参考: https://www.cnblogs.com/zhming26/p/6164131.html
错误9:(配置SSD时遇到的问题)
python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: No such file or directory compilation terminated.
添加软链
sudo ln -s /usr/include/python2.7/ /usr/local/include/python2.7
sudo ln -s /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ /usr/local/include/python2.7/numpy
配置文件Makefile.config,进入caffe目录
#在PYTHON_INCLUDE下(这里看仔细)
把
/usr/lib/python2.7/dist-packages/numpy/core/include
改为
/usr/local/lib/python2.7/dist-packages/numpy/core/include
因为numpy默认安装的位置是 /usr/local/lib/python2.7/, 不是Makefile.config 文件中的路径, 所以会报错找不到
错误10: (opencv3.4)
error while loading shared libraries: libopencv_core.so.3.4: cannot open shared object file: No such file or directory
原因:从这个提示可以知道系统找不到libopencv_core.so.3.2在哪儿,而系统是通过/etc/ld.so.conf中的路径找.so这个文件的。将libopencv_core.so.3.2的路径加入到.conf文件中就可以了。.so文件一般存放在/usr/local/lib目录下,博主进入这个文件目录下果然发现了这个文件。
对ld.so.conf这个文件进行编辑是需要获取超级权限的
cd ~ //先返回到根目录
sudo vim /etc/ld.so.conf //获取超级权限,并用vim编辑器打开该文件
进入vim编辑器之后先输入i 进入vim的编辑模式,然后在末尾加入/usr/local/lib即可,添加完之后,先按esc建退出编辑装态,然后输入:wq 保存并退出
sudo ldconfig
然后再运行make runtest 就可以正常运行了。
错误11:
Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR
GPU显存不够,可以查看GPU显示情况
错误12:
fatal error: pyconfig.h: No such file or directory
原因:主要是因为,使用的是Anaconda配置的caffe, 此时默认使用的是系统的python路径,CPLUS的path没有设置,因此把路径改成anaconda的python路径
如果使用的是系统的python路径,解决方法如下:
make clean
export CPLUS_INCLUDE_PATH=/usr/include/python2.7
make all -j8
如果使用的是anaconda Python,路径如下:
export CPLUS_INCLUDE_PATH=/home/cv/SoftWare/Anaconda3/envs/py36/include/python3.6m
参考文章: https://blog.csdn.net/kemgine/article/details/78781377