1. 程式人生 > >caffe和matlab的介面配置——make mattest出錯

caffe和matlab的介面配置——make mattest出錯

紀念一下終於解決的caffe和matlab的介面配置問題:
問題
make matcaffe依照正常流程改一下makefile.configure裡面的matlab路徑就好了。

Invalid MEX-file
‘/home/wxy/packages/caffe-master/matlab/+caffe/private/caffe_.mexa64’:
/usr/local/MATLAB/R2015b/bin/glnxa64/…/…/sys/os/glnxa64/libstdc++.so.6:
version `CXXABI_1.3.8’ not found (required by
/home/wxy/packages/caffe-master/matlab/+caffe/private/caffe_.mexa64)

出錯 caffe.set_mode_cpu (line 5)
caffe_(‘set_mode_cpu’);

出錯 caffe.run_tests (line 6)
caffe.set_mode_cpu();

分析
出現這種錯誤的原因在於: 在使用Matlab 執行caffe 庫的過程中,有時會因為Matlab 和 caffe 版本的不一致,而產生錯誤。

在linux 命令列視窗中,使用ldd 命令檢視 caffe_.mexa64 所依賴的所有庫檔案的路徑,讀法結構為 : ldd path,其中path是caafe_.mexa64的完整路徑:
ldd /home/wxy/packages/caffe-master/matlab/+caffe/private/caffe_.mexa64 | grep libstdc++,可以得到libstdc++.so.6的真實路徑
“libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ”;

解決
在matlab命令列視窗執行!ldd /home/wxy/packages/caffe-master/matlab/+caffe/private/caffe_.mexa64 | grep libstdc++,可以發現libstdc++.so.6 ==> /usr/local/MATLAB/R2015b/sys/os/glnxa64/libstdc++.so.6, 也就是說在matlab裡自動呼叫的是/usr/local/MATLAB/R2015b/sys/os/glnxa64/libstdc++.so.6,而不是 /usr/lib/x86_64-linux-gnu/libstdc++.so.6,所以解決方法是建立軟連結:

sudo rm /usr/local/MATLAB/R2015b/sys/os/glnxa64/libstdc++.so.6
sudo ln -s  /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/local/MATLAB/R2015b/sys/os/glnxa64/libstdc++.so.6

這樣就解決啦!
終端輸入make mattest最終出現以下視窗:
在這裡插入圖片描述