caffe编译之路
caffe编译:fatal error: pyconfig.h: No such file or directory #include "pyconfig.h"
在网上搜了相关解决方法
其中 ,有的方法不可行,有的方法不全面,
经过个人尝试,可以采用以下完备方案:
首先尝试,
找到/usr/include/python2.7 /pyconfig.h
尝试执行export CPLUS_INCLUDE_PATH=/usr/include/python2.7
后 再执行make all 依然报错
最后 只能把
编译通过
问题2 undefined reference to imdecode( )
今天给吉姐编译 Caffe 的时候,碰到如下的错误:
..build_release/lib/libcaffe.so: undefined reference to cv::imdecode(cv::_InputArray const&, int)
.build_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&, int)
因为昨天我将在服务器上编译安装了 openCV3,所以我怀疑是 openCV 的问题。
想起来 Caffe 的 Makefile.config
中,有一个注释,当我们使用 openCV3 的时候,需要取消。果然,当取消之后,就可以 make all
了。
首先,我是已经配置过了opencv的,可以这样查询安装版本:
$ pkg-config --modversion opencv
因为编译好了,理所当然,输出结果是3.1.0
所以出现上面的错误,应该是opencv_imgcodecs
链接的问题,比较有效的解决方案是,把opencv需要的lib添加到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
问题3
makefile编译时候出现:commands commence before first target
我们知道, 在C/C++语言中, 可以用\来换行, 此时要注意, 在一行的最后面加上\, 而这个\后面不能再有任何字符, 哪怕是空格, 也不允许, 否则出错。对于makefile, 也有类似的原则, 最近写makefile, 一不小心, 在\后多了个空格, 结果编译出现:commands commence before first target
要小心啊。
问题4
为防止编译时出现错误信息:error while loading shared libraries:libhdf5.so.10: cannot open shared object file: No such file or directory
解决方法:在终端执行以下命令
问题5
import caffe报错No module named google.protobuf.internal
原因是装了anaconda2, python配置的运行环境在anaconda2下,这个环境没有安装protobuf,需要自己重新装。解决办法是:
sudo chmod 777 -R anaconda2(文件夹) 改变权限 然后
conda install protobuf
就搞定啦~
caffe编译:fatal error: pyconfig.h: No such file or directory #include "pyconfig.h"
在网上搜了相关解决方法
其中 ,有的方法不可行,有的方法不全面,
经过个人尝试,可以采用以下完备方案:
首先尝试,
找到/usr/include/python2.7 /pyconfig.h
尝试执行export CPLUS_INCLUDE_PATH=/usr/include/python2.7
后 再执行make all 依然报错
最后 只能把
编译通过
问题2 undefined reference to imdecode( )
今天给吉姐编译 Caffe 的时候,碰到如下的错误:
..build_release/lib/libcaffe.so: undefined reference to cv::imdecode(cv::_InputArray const&, int)
.build_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&, int)
因为昨天我将在服务器上编译安装了 openCV3,所以我怀疑是 openCV 的问题。
想起来 Caffe 的 Makefile.config
中,有一个注释,当我们使用 openCV3 的时候,需要取消。果然,当取消之后,就可以 make all
了。
首先,我是已经配置过了opencv的,可以这样查询安装版本:
$ pkg-config --modversion opencv
因为编译好了,理所当然,输出结果是3.1.0
所以出现上面的错误,应该是opencv_imgcodecs
链接的问题,比较有效的解决方案是,把opencv需要的lib添加到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
问题3
makefile编译时候出现:commands commence before first target
我们知道, 在C/C++语言中, 可以用\来换行, 此时要注意, 在一行的最后面加上\, 而这个\后面不能再有任何字符, 哪怕是空格, 也不允许, 否则出错。对于makefile, 也有类似的原则, 最近写makefile, 一不小心, 在\后多了个空格, 结果编译出现:commands commence before first target
要小心啊。
问题4
为防止编译时出现错误信息:error while loading shared libraries:libhdf5.so.10: cannot open shared object file: No such file or directory
解决方法:在终端执行以下命令
问题5
import caffe报错No module named google.protobuf.internal
原因是装了anaconda2, python配置的运行环境在anaconda2下,这个环境没有安装protobuf,需要自己重新装。解决办法是:
sudo chmod 777 -R anaconda2(文件夹) 改变权限 然后
conda install protobuf
就搞定啦~