调试了个代码,需要同时用到matlab,python和caffe,实在是用不惯linux下的matlab,尝试将代码移植到windows下编译,结果失败,好吧,在linux下安装matlab,以下是安装时一些问题。
安装包的下载网上有,如果没找到可以邮件咨询我。
主要步骤:
下载好有2个安装的镜像文件:
R2016b_glnxa64_dvd1.iso
R2016b_glnxa64_dvd2.iso
1.挂载目录
mkdir /home/xxx/matlab2016
sudo 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 +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显示图像导致的,关闭每次迭代图像显示即可解决