1 关于Protobuf的介绍
什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:
Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。
具体的内容可参考:链接地址
2 几个查看protobuf版本信息之类的命令
查看哪些路径安装了protoc:
whereis protoc
当查询的时候我看到有三个地方都安装了protoc,而且每个地方对应的版本还不一样。
查看默认调用的protoc是哪个:
which protoc
查看默认的protoc的版本:
protoc --version
查看pip安装的protoc的信息:(我的话就显示我在anaconda下的3.5+的版本了)
pip show protobuf
3 protobuf的安装与卸载
3.1 源码安装
下载protobuf 3.3.0的代码,解压
wget https://github.com/google/protobuf/archive/v3.3.0.zip
unzip protobuf
进目录编译
cd protobuf-3.3.0/
./autogen.sh
./configure
make
make check
3.2 命令安装
安装
sudo apt-get install protobuf
卸载
sudo apt-get remove libprotobuf-dev
3.3 anaconda安装
如果在安装了anaconda后使用conda说找不到命令,一般是没有添加环境变量。
安装:
conda install -c https://conda.anaconda.org/anaconda protobuf
卸载:
conda uninstall protobuf
4 在安装caffe的时候,官方提供了以下的命令。
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
此时会安装一个 /usr/bin/protoc 的版本,默认是2.6.1。实际上caffe的编译也需要的就是这个版本。
典型报错:‘kEmptyString’ is not a member of ‘google::protobuf::internel’
但是现在环境中有多个protoc版本,caffe编译无法对应。
解决办法1:在Makefile里面将两个protoc,换成安装路径下的protoc,例如/usr/bin/protoc
解决办法2:直接暴力一点whereis protoc查询到安装protoc的位置,其它版本全部删掉。
保留官方命令sudo apt-get install libprotobuf-dev protobuf-compiler 安装在usr/bin/protoc 的版本
5 caffe编译与安装参考 caffe官网
6 其它错误问题解决方案
6.1 make: *** [.build_release/tools/upgrade_net_proto_text.bin] Error 1 --->参考