今天编译的过程中遇到的问题以及查阅到的资料,记录在这里,希望可以帮到其他人。
BVLC的caffe源码,如果要编译matlab的接口时,首先需要将makefile.config文件中的matlab的安装路径给到:
然后再
make all
在这里make的过程中,如果采用-j8多和编译的时候,可能会出现protobuf没有的错误,但是单核编译就没有问题,也是醉了。
make matcaffe
这时候有可能会遇到系统的gcc版本与matlab支持的gcc版本不一致的问题,参照这篇博客先对gcc进行了降级操作:
sudo apt-get install -y gcc-4.7
sudo apt-get install -y g++-4.7
cd /usr/bin/
sudo rm gcc
sudo ln -s gcc-4.7 gcc
sudo rm g++
sudo ln -s g++-4.7 g++
gcc -v
然后再次
make clean
make all
make matcaffe
此时又会遇到这样的问题(error: no matching function for call to ‘remove_if(std::vector<boost::shared_ptr<caffe::Solver<float> > >::iterator, std::vector<boost::shared_ptr<caffe::Solver<float> > >::iterator, delete_solver(int, mxArray**, int, const mxArray**)::<lambda(const boost::shared_ptr<caffe::Solver<float> >&)>)’)按照这里的方法编译通过;
然后在使用caffe的matlab接口的时候还会遇到libprotobuf.so.10:cannot open shared object file:ne such file or directory的问题,只有与matlab所使用的libprotobuf与Anaconda使用的不一样,类似于这里的操作,将matlab本身的删掉,然后再将Anaconda里面的对应的文件建立软链接到matlab对应的位置即可。
如果遇到没有cv2模块的错误,用如下的命令进行安装:
conda install opencv