编译Matconvnet的一些坑

这是我自己根据网络各种资源博客指导,自己实践过的。

编译过程参考:http://www.vlfeat.org/matconvnet/install/#compiling

Compiling for CPU

版本:windows10,matlab2018a,VS 2017 community

问题:matlab运行>> vl_compilenn出现 cl.exe not found in PATH

解决方案:找到 cl.exe 手动添加环境变量,因为vs在大概15以后就不和原来存放的文件路径一样了,所以找起来废了好大的劲,大概就是慢慢找吧,我不是把vs装到c盘的,所以不能像很多博客那样在c盘的 C:\Program Files (x86)中找,而是在我的安装的地方找到的,D:\MySoftware\com_vs_2017\VC\Tools\MSVC\14.11.25503\bin\Hostx64\x64

D:\MySoftware\com_vs_2017就是我安装vs2017的路径。。。接下来就是配置环境变量了,这个就不说了,简单添加就好。

添加完了,matlab记得重启一下。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

版本:Ubuntu16.04,matlab2017b

问题:matlab运行>> vl_compilenn说是gcc的版本太高,支持4.9.×

解决方案:大家都知道吧,16.04自带的gnu好像是5.4的,所以gcc、g++都是5.4的,只要把gcc、g++的版本降低就行了,

在Ubuntu 16.04上安装老版gcc十分简单,命令行解决。

第一步:

sudo apt-get install gcc-4.9

输入密码,同意安装,接下来就自动下载安装4.9版本了。

第二步:设置默认的gcc版本

gcc --version
(可选)查看当前版本,不出意外的话会返回Ubuntu 16.04自带的5.4.0这个版本号,现在使用gcc命令编译时还是会用新版本。
ls /usr/bin/gcc*
(可选)查看已有的gcc版本,确认一下刚才4.9有没有装成功。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 100
将某个版本加入gcc候选中,最后的数字是优先级,我自己是直接设为100,没任何问题。

接着输入:

sudo update-alternatives --config gcc
如果用过此方法配置过多个gcc版本,会看到如下选项:(注:复制于参考文献【1】,这里只是做个说明示范,实际装4.9时不会如下显示)

选择                  路径            优先级        状态
------------------------------------------------------------
* 0            /usr/bin/gcc-4.4  50        自动模式
  1            /usr/bin/gcc-4.4  50        手动模式
  2            /usr/bin/gcc-4.5  40        手动模式
  3            /usr/bin/gcc-4.6  30        手动模式

大多数情况是没有这么配置过,所以不会给选项,命令行会返回“仅有一个可用的gcc版本”(大意)。此时在运行gcc --version查看版本,发现4.9已经为默认的gcc版本。

然后再按同样方法装上g++(把对应位置的gcc改为g++就好,其他版本也就是改下对应版本号就行),如果只装gcc的话,用cmake配置出来的项目遇到c++代码还是会用之前版本的gcc。

OK。

 

Compiling the GPU support

一般跟着官网的指导来就行了,如果遇到matlab和cuda的版本的问题,Ubuntu的方法如下:注意的是,cuda的安装地点可能会有所不同,我是在/usr/local/,这里自己找到对的地方就行了。官网也有提示。

Using an unsupported CUDA toolkit version
vl_compilenn('enableGpu', true, 'cudaRoot', '/usr/local/cuda-8.0','cudaMethod', 'nvcc')

 

最后发现:

其实g++和gcc的版本问题不打紧的一般,如果顺利还是可以编译成功,只是会有warning,这个不要紧。matlab和CUDA的版本不对应并不影响,低版本的matlab也可以用较高版本的CUDA的,找准和对的地方就行。

————————————————————————————————————————————————————————

持续更新ing

如有不对之处,欢迎留言!交流一下。

参考:

【1】https://www.linuxidc.com/Linux/2017-03/142299.htm

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值