手贱把之前编译好的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中文件,可能是这个原因导致的版本冲突)