Caffe安装中多版本protoc选择问题

作为一个实验室资源特别紧缺,好几个人在服务器上共用一个路径的苦逼研究生,面对大家都需要跑caffe的时候就会非常蛋疼。特别是有些人乱七八糟的装不同版本的protobuf,安装在不同路径下,该如何选取特定的版本进行caffe编译呢?
我是linux零基础+caffe零基础,查了好多资料,勉强拼凑出来了如何选择protobuf版本的解决办法。


例如我们的服务器上有两个版本的protobuf,版本3.1.0安装在usr/local/bin下,版本3.0.0安装在$HOME/anaconda2/bin下,
在terminal中运行

sudo protoc --version

会显示当前版本是3.1.0,路径指向的是usr/local/bin

protoc --version

就会显示版本是3.0.0,路径指向$HOME/anaconda2/bin

编译caffe用

sudo make all -j4

就会出现这一个常见的问题

In file included from .build_release/src/caffe/proto/caffe.pb.cc:5:0:
.build_release/src/caffe/proto/caffe.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
 #error This file was generated by a newer version of protoc which is
  ^
.build_release/src/caffe/proto/caffe.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
 #error incompatible with your Protocol Buffer headers.  Please update
  ^
.build_release/src/caffe/proto/caffe.pb.h:14:2: error: #error your headers.
 #error your headers.
  ^
  ...

这是一个经典问题,所有人都会跟你说重装protobuf吧,比如运行

sudo apt-get install libprotobuf-dev

然而对于一个需要低版本的protobuf的人这句命令行没卵用。

由于我的$HOME/anaconda2/bin中有合适的版本,所以我是打算直接用这里的protobuf,通过查资料,了解到sudo的时候,默认的环境变量在/etc/sudoers文件中,一般来说sudo会重置$PATH,而sudoers文件有这样一行

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

所以 sudo的时候$PATH就是从这里读取,因此我只需添加我的路径就可以了,注意要把路径添加在其他版本路径的前面,位置决定了读取顺序

#Defaults   secure_path="/usr/local/sbin:/usr/local/bin:\$HOME/anaconda2/bin:/usr/sbin:/usr/bin:/sbin:/bin"

注意sudoers文件很重要,修改前记得备份

secure_path是即时生效的,这时候再次运行sudo使用的版本就变成了我需要的3.0.0版本。
这算是解决了第一步问题吧……后面还有各种问题,一点一点记录吧。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值