Protobuf是什么
Protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储。
是google公司的产品!
如何使用Protobuf
protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/addressbook.proto
-I 编译源文件的目录
--java_out 编译目录文件
通过这个命令会自动编译出java代码,目前protobuf支持以下语言
Language | Source |
---|---|
C++ | src |
Java | java |
Python | python |
Objective-C | objectivec |
C# | csharp |
JavaNano | javanano |
JavaScript | js |
Ruby | ruby |
Go | golang/protobuf |
PHP | php |
Dart | dart-lang/protobuf |
由于命令行的方式编译代码非常繁琐,且效率极低。谷歌提供了开源的Protobuf Gradle插件
但目前为止,
总是报以下错误:
且以下插件我都已经安装;
autoconf automake libtool curl (used to download gmock) make g++ unzip
没有办法,只好换protobuf-2.6.1.tar.gz版才成功;
使用的不是源码,而是release版本 (已经包含gmock和configure脚本)
- tar -zxvf protobuf-2.6.1.tar.gz -C /usr/local/
cd protobuf-2.6.1/
# 指定安装路径
./configure --prefix=/usr/local/protobuf
#编译
make
# 测试,这一步很耗时间
make check && make install
安装成功!
设置一下环境变量
vim /etc/profile
# (动态库搜索路径) 程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib # (静态库搜索路径) 程序编译期间查找动态链接库时指定查找共享库的路径 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib export PATH=$PATH:/usr/local/protobuf/bin
4、查看版本
protoc --version
之后,对于相同的系统环境,就不需要再编译了,直接将编译好的protobuf(目录:/usr/local/protobuf)分发到其他计算机,设置环境变量即可。