编译caffe 多版本protoc冲突

博主手贱删除之前编译好的caffe后重新编译,因安装anaconda后protoc3.6.1与之前的protoc2.5冲突出现错误。博主进行了三次尝试,先注释.bashrc里anaconda变量、再修改Makefile中protoc版本,编译均不通过,最后编译protoc2.6.1成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手贱把之前编译好的caffe给删了,得重新编译,但是发现出现了各种错误,主要就是因为安装了anaconda后,有一个protoc3.6.1的存在,和自己之前编译安装的protoc2.5有冲突。

处理过程
1.尝试一:
将.bashrc里关于anaconda的变量先注释掉,叫上protoc2.5的:

#protobuf 2.5
export PATH=/usr/local/pro-2.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/pro-2.5/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH==/usr/local/pro-2.5/lib/pkgconfig:$PKG_CONFIG_PATH
#end

这时候通过protoc --version可以看到版本已经变成了2.5,然而编译还是不通过。
2.尝试二:
修改Makefile中protoc的版本:
找到protoc相应位置,修改为如下

    @ echo PROTOC $<
    $(Q)/usr/local/pro-2.5/bin/protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<

$(PY_PROTO_BUILD_DIR)/%_pb2.py : $(PROTO_SRC_DIR)/%.proto \
        $(PY_PROTO_INIT) | $(PY_PROTO_BUILD_DIR)
    @ echo PROTOC \(python\) $<
    $(Q)/usr/local/pro-2.5/bin/protoc --proto_path=src --python_out=python $<

之前caffe编译成功就是通过这种方式,然后编译还是不通过。

3.尝试三:编译protoc2.6.1

下载protoc2.6.1,运行./autogen.sh时因为电脑没有翻墙,会出现下载不了的情况,参考这个解决

$cd /usr/local/include/google
$sudo rm -rf protobuf
$ ./autogen.sh
$ ./configure --prefix=/usr/local/pro-2.6.1
$ make
$ make check
$ sudo make install
$ sudo ldconfig

然后可以正确编译通过(并没有去修改~~/.bashrc和Makefile就通过了,还是用的protoc2.5,安装protoc2.6.1时,重新生成了/usr/local/include/google中文件,可能是这个原因导致的版本冲突)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值