编译make matcaffe后,执行make mattest后,往往出现“Invalid MEX-file"问题,其原因是MATLAB和linux的库冲突,解决的方法是用linux的库(在编译caffe之前大家的opencv等库肯定也早已装好了)

大部分的解决方法是通过export LD_LIBRARY_PATH和 LD_PRELOAD来链接,但是效果不好。最后发现,只有直接去MATLAB下面删除库并重新链接到x86_64-linux-gnu的方法是最好的。具体方法如下:

1.不需要降级gcc和g++,就用linux的自带版本,否则caffe编译不一定通过。我的是14.04的5.4(千万不要先用5去编译caffe再降级用4.4编译matcaffe)

2.不要去用改LIBRARY_PATH的方法,因为很可能不成功,尤其是有倒霉催的anaconda的情况下。

3.找到你的linux库的位置(一般是/usr/lib/x86_64-linux-gnu/)以及MATLAB库的位置(默认是/usr/local/MATLAB/R2014a/sys/os/glnxa64/)。然后写个sh执行下列操作

rm -rf /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6
rm -rf /usr/local/MATLAB/R2014a/bin/glnxa64/libopencv_core.so.2.4
ln -s /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4.9  /usr/local/MATLAB/R2014a/bin/glnxa64/libopencv_core.so.2.4
rm -rf /usr/local/MATLAB/R2014a/bin/glnxa64/libopencv_imgproc.so.2.4
ln -s /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4.9  /usr/local/MATLAB/R2014a/bin/glnxa64/libopencv_imgproc.so.2.4
rm -rf /usr/local/MATLAB/R2014a/bin/glnxa64/libopencv_highgui.so.2.4
ln -s /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.9  /usr/local/MATLAB/R2014a/bin/glnxa64/libopencv_highgui.so.2.4
rm -rf /usr/local/MATLAB/R2014a/bin/glnxa64/libfreetype.so.6
ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6  /usr/local/MATLAB/R2014a/bin/glnxa64/libfreetype.so.6

~                                                                               
~                                 

注意,主库一个,opencv库三个,还有一个freetype库。重新链接完成后即可正常使用Matcaffe。

PS:大多数人其实只需要前四个即可,但是像我这样被anaconda坑的,主库和opendv解决了但是又碰到FCHAR什么的问题,所以还是加上吧。

Logo

更多推荐