简介
一种更轻量的数据格式——protobuf。
protobuf的优点:
- 更小、更快、更简单。
- 支持多种编程语言 。
- 解析速度快。
- 可扩展性强。
区别
主要不含两个功能:
因为protobuf支持的语言还不够完善,所以有一些语言并不在这个仓库中,所以需要下载特定的语言,那么protobuf-c就是支持C语言版本的实现。
对于官方版本的protobuf,包含python、ruby、C++等多种语言的支持,但是不包括C语言:
1.protoc通过proto文件生成支持语言的代码
2.protobuf不同语言的库用于代码最终调用时使用
对于c语言版本的protobuf,只针对C语言做了实现,包含:
1.protoc-c通过proto文件生成对应c语言的代码
2.libprotobuf-c库用于编译时连接使用
安装
下载ProtoBuf前⼀定要安装依赖库:
autoconf automake libtool curl make g++ unzip
如未安装,安装命令如下:
Ubuntu⽤⼾选择:
sudo apt-get install autoconf automake libtool curl make g++ unzip -y
获取源码
protobuf版本地址:https://github.com/protocolbuffers/protobuf/releases
protobuf-c版本地址:https://github.com/protobuf-c/protobuf-c/releases
编译安装
protobuf
需要将main分支切换到4.0.x分支,才会有autogen.sh脚本
./autogen.sh
./configure 默认安装在 /usr/local ⽬录,lib、bin都是分散的
./configure --prefix=/usr/local/protobuf 统一安装在/usr/local/protobuf目录下
make -j4 && make install
即修改了安装⽬录,那么还需要在/etc/profile
(系统配置文件)中添加⼀些内容:
sudo 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/
#c程序头⽂件搜索路径
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/
#c++程序头⽂件搜索路径
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/
#pkg-config 路径
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
最后⼀步,重新执⾏/etc/profile⽂件:
source /etc/profile
protobuf-c
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
./autogen.sh
./configure --prefix=/usr/local/protobufc
make -j4 && make install
如上需要在/etc/profile文件中加上面的配置
使用转换工具
protoc-c --c_cout=. *.proto