調試了個代碼,需要同時用到matlab,python和caffe,實在是用不慣linux下的matlab,嘗試將代碼移植到windows下編譯,結果失敗,好吧,在linux下安裝matlab,以下是安裝時一些問題。 matlab2016b安裝步驟
安裝包的下載網上有,如果沒找到可以郵件諮詢我。
主要步驟:
下載好有2個安裝的鏡像檔案:
R2016b_glnxa64_dvd1.isoR2016b_glnxa64_dvd2.iso
1.掛載目錄
mkdir /home/xxx/matlab2016sudo mount -t auto -o loop /home/xxx/DownloadMATLAB/R2016b_glnxa64_dvd1.iso /home/xxx/matlab2016
其中 xxx 為你的使用者目錄,注意,有些教程中直接掛載到根目錄上,如果你的根目錄太小,會導致掛載不上,也有可能當要求插入第二塊CD時無法掛載
2.安裝R2016b_glnxa64_dvd1.iso (彈出介面,開始安裝):
sudo /home/xxx/matlab2016/install
3.插入第二塊CD(安裝中途會彈出)
sudo mount -t auto -o loop /home/xxx/DownloadMATLAB/R2016b_glnxa64_dvd2.iso /home/xxx/matlab2016
正常情況下這樣就可以了完成了。 安裝時一些問題:
1.安裝時出現archive is not a ZIP archive 和 tmp/xxxx類似的錯誤,這是由於/tmp空間不足造成的,詳見Matlab answers.
解決辦法: 最簡單的辦法就是看看錯誤出現在安裝哪個擴充包的時候,安裝時不選那個包就ok了,前提是你不會用到這個包。比如在安裝Computer Vision System工具箱時出錯,在安裝開始選擇時,不選這個工具箱進行安裝。
2.第二塊CD無法掛載。
解決辦法: 這個可能是你講鏡像檔案掛載到根目錄下導致許可權不夠或者是空間不足導致的,可以將其掛載到使用者目錄解決。
3.編譯pycaffe時出現:
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory
解決辦法: 在make前增加export CPLUS_INCLUDE_PATH=/usr/include/python2.7
重新編譯,如果使用了Anaconda,不行的話使用export CPLUS_INCLUDE_PATH=/home/xxx/anaconda2/include/python2.7 使用時一些錯誤:
1.運行matlab調用caffe時出現:
/usr/local/MATLAB/R2014a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6:version 'GLIBCXX_3.4.21' not found
解決辦法: LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libstdc++.so.6" matlab 運行,即在matlab前面增加LD_PRELOAD=。詳見version `GLIBCXX_3.4.21’ not found
2.運行程式時出現Check failed: error == cudaSuccess (10 vs. 0) invalid device function,網上資料說顯卡的計算能力沒有設定對,見stack overflow。需要將Makefile.config檔案中的CUDA_ARCH增加如下:
-gencode arch=compute_52,code=compute_52
仿照你安裝caffe的設定檔即可。
但是這樣還是沒有解決我的問題,最後發現是顯卡選擇錯了,如果就是1塊顯卡,設定調用為:
caffe('set_device', 0)
我使用成了caffe('set_device', 1)導致了這個錯誤。
3.程式出現如下:
Segmentation violation detected at Thu Dec 28 10:37:01 2017...[ 70] 0x00007f40fd6196aa /lib/x86_64-linux-gnu/libpthread.so.0+00030378[ 71] 0x00007f40fd34eeed /lib/x86_64-linux-gnu/libc.so.6+01076973 clone+00000109[ 72] 0x0000000000000000 <unknown-module>+00000000...If this problem is reproducible, please submit a Service Request via: http://www.mathworks.com/support/contact_us/
可能使用這種方法解決:詳見1297894
將Matlab檔案下:sys/os/glnxa64中的libstdc++.so.6重新命名為libstdc++.so.6.old
如果你是編譯了MEX-file,可能是編譯時間g++的版本有問題,看看有沒有報錯(g++5.0編caffe,4.9編matcaffe)。
也有可能是你的matlab顯示映像導致的,關閉每次迭代映像顯示即可解決