ubuntu16.04+CUDA10.0+Matlab2018a安装matconvnet-1.0-beta25
- 1.ubuntu安装Matlab2018a
- 2.ubuntu安装GCC6.3.0
- 3.编译matconvnet
- 4.参考
- 4.1[ubuntu安装Matlab2018](https://blog.csdn.net/qq_37643960/article/details/89381552)
- 4.2[ubuntu安装GCC6.3.0](https://www.cnblogs.com/RichardYao/archive/2019/01/09/10247209.html)
- 4.3[参考1](https://github.com/vlfeat/matconvnet/issues/1143) [参考2](https://github.com/vlfeat/matconvnet/issues/1200)
- 4.4['-R2018a' and linked with '-R2017b'](https://blog.csdn.net/u014292102/article/details/80331481)
- 第一次写csdn,有错误请指教,部分草考链接没粘贴上来,这是处理了两天的一个安装过程。
1.ubuntu安装Matlab2018a
2.ubuntu安装GCC6.3.0
本人机器上右gcc5.4,执行本文步骤3时候,报错,当前版本5.4,需要指定版本gcc6.3.X,直接按照3.1步骤中的提示安装指定版本的gcc,如果能在机器上直接用
sudo apt-get install gcc-x
安装指定版本的gcc的话,再自行百度切换gcc版本,之后可以忽略步骤2
注意:不需要卸载旧的GCC和G++
ubuntu安装GCC6.3.0
注意:链接中5.安装isl,不进行安装会在编译GCC时候报错,5.安装isl 中configure时候可能会遇到gmp.h找不到的错误,configure改为:
“$ …/configure --prefix=/usr/local/isl-0.18 --with-gmp-prefix=/usr/local/gmp-6.1.2”(按照自己安装的对应版本进行设置)对比原文,通过–with-gmp-prefix指定gmp,没找到为什么3和4中不需要这样设置,而且不报错
注意:链接中如果编译gcc时候报错,可以去掉configure中的“–with-system-zlib”,从新编译
3.编译matconvnet
3.1 打开matlab,然后找到matlab右键->添加路路径->选定的文件夹和子文件夹
然后,命令行窗口执行(参考2.ubuntu安装GCC6.3.0)
mex setup C++
vl_compilenn()
警告: 您使用的 gcc 版本为 ‘5.4.0’。不支持该版本的 gcc。MEX 当前支持的版本为 ‘6.3.x’。有关当前支持的编译器列表
根据提示安装编译器,并切换编译器版本
3.2编译
安装编译器后,需要将所有编译器用的库添加到LD_LIBRARY_PATH的环境变量中去。
再次在matlab中执行
mex setup C++
vl_compilenn()
报错找不到libmpfr.so.6
但是已经将fmpr库中的lib添加到LD_LIBRARY_PATH中,但还是报错找不到libmpfr.so.6,这个问题卡个很长时间,因该是matlab中有其他设置换将变量的地方,但是本人接触较少,通过添加路径方式也行不通,直接将找不到的库通过“ln -s /usr/local/mpfr-4.1.0/lib/libmpfr.so.6 MATLAB/R2018a/bin/glnxa64”命令软链接到matlab安装路径下“glnxa64”文件夹内,这个错误解决了。
再次在matlab中执行
mex setup C++
vl_compilenn()
vl_testnn
能够显示在编译测试
如果这里就报下面GPU版本的错误,则现在就按照下面修改,或参考两个链接参考1 和参考2和’-R2018a’ and linked with ‘-R2017b’
这只是cpu版本,但是GPU版本运行会报错
vl_compilenn(‘enableGpu’,true,‘cudaRoot’,’/usr/local/cuda’,‘cudaMethod’,‘nvcc’,‘enableCudnn’,true,‘cudnnRoot’,‘usr/local/cuda/lib64’)
需要设置自己机器的指定版本的cuda路径和cuda库的路径分别替换“/usr/local/cuda”和“usr/local/cuda/lib64”
这就需要对“vl_compilenn.m”文件做如下两处修改:
然后能正常编译,测试:
vl_compilenn(‘enableGpu’,true,‘cudaRoot’,’/usr/local/cuda’,‘cudaMethod’,‘nvcc’,‘enableCudnn’,true,‘cudnnRoot’,‘usr/local/cuda/lib64’)
vl_testnn(‘gpu’,true)
但是此时再运行:
vl_compilenn()
还会报错
此时,上一步内容改回去,去掉“-R2018a,…”另一个图中添加“-largeArrayDims”
正常运行,目前自己只找到这样能正常运行的方法