ubuntu下 编译Caffe的Matlab接口

一般情况下不愿意使用Caffe的Matlab接口,总觉得Linux版的Matlab很难配置,但是现在搞目标检测,得到的源码是使用的Caffe的Matlab接口,只能硬着头皮上了。

(1)修改caffe-master/Makefile.config

这一步主要是在Caffe的编译配置文件Makefile.config中加入Matlab的路径。注意路径文件夹是要包含Matlab安装目录的“bin”文件夹的。

ubuntu下 编译Caffe的Matlab接口

(2)编译接口。这里默认已经编译好了Caffe源码主体部分。所以直接编译接口。在caffe-master目录下打开终端,输入:  make matcaffe   至于如何编译Caffe源码的主体部分请大家百度,就是make all ,make test那些。我是一开始没有在Makefile.config中加入Matlab路径,所以编译Caffe主体代码时不会编译Matlab接口。

(3)测试接口。输入 make mattest

这里可能报错:caffe_.mexa64: undefined symbol:
_ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE

ubuntu下 编译Caffe的Matlab接口

错误原因是Matlab自带的库和Ubuntu的系统库之间发生了冲突,一言不和就废掉Matlab的自带库,使用Ubuntu系统库,呵呵。

PS:只替换库libstdc++.so.6是不行的,要解决此问题需要多替换几个库。输入终端命令:

export LD_PRELOAD=http://www.likecs.com/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libfreetype.so.6

export LD_LIBRARY_PATH=http://www.likecs.com/usr/lib/x86_64-linux-gnu/

可以通过 ldd ./matlab/+caffe/private/caffe_.mexa64 查看其依赖了那些动态库,将其增加到你的 LD_PRELOAD中,见caffe官网  #matlab

这个要视具体目录而定,我这边写了个脚本,如下:

export LD_LIBRARY_PATH=http://www.likecs.com/usr/lib/x86_64-linux-gnu/:/usr/local/cuda-8.0/lib64 LD_PRELOAD=http://www.likecs.com/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libfreetype.so.6 matlab

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzxfxw.html