Linux protobuf以及protobuf-c的安装与使用
由于google protobuf并不支持c语言,所以如要通过protobuf将proto文件转换成c文件,除了需要安装protobuf以外,还需安装第3方的protobuf-c。
1.protobuf的安装
(a). 下载protobuf,下面是最新版的路径
https://github.com/protocolbuffers/protobuf/releases/tag/v3.15.8
(b). linux下安装
sudo apt-get install autoconf automake libtool
©. 执行./autogen.sh脚本,生成configure配置文件。
(d). 执行./configure进行配置,注意最好指定一下安装参数
./configure --prefix=/usr/local/protobuf --libdir=/usr/lib
如果出现error: no acceptable C compiler found in $PATH
则需要安装gcc、
Sudo apt-get install gcc
Sudo apt-get install build-essential
Sudo apt-get install g++
(e). make
(f). sudo make install
至此,protobuf就安装完成,接下来需要安装protobuf-c。
2.protobuf的安装
(a). 下载
git clone https://github.com/protobuf-c/protobuf-c.git
(b).export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
// 指定protobuf.pc文件所在
©. ./autogen.sh
(d). 配置信息,注意prefix不要与protobuffer一样,否则会覆盖protobuffer。 ./configure --prefix=/usr/local/protobuf-c --libdir=/usr/lib/
如出现错误:The pkg-config script could not be found or is too old
安装 sudo apt-get install pkg-config
(e). make
出现如下错误:make: *** No targets specified and no makefile found. Stop.
首先查看 gcc 版本 gcc -v,若无安装,则运行 sudo/yum install gcc-c++,确保 gcc 是安装成功的。
若报错仍未解决则update最新版本系统软件,apt-get update。
编译缺失关联软件,apt-get install gcc build-essential
(f). sudo make install
(g). 拷贝头文件
sudo cp -r /usr/local/protobuf-c/include/protobuf-c /usr/include
(h). 软链接protoc-gen-c
sudo ln -s /usr/local/protobuf-c/bin/protoc-gen-c /usr/local/bin/protoc-c
走到这一步就已经成功安装完成。接下来是protobuf-c的使用方法。
Protoc-c --c_out=./ ./speech.proto
–c_out=是最后生成的.c文件的路径,然后才是原始proto的路径。
如上是需要将当前路径下的speech.proto文件转换成.c/.h,并保存到当前路径下。
如果当前需要转换的proto文件中有include其他文件,可以通过 -I声明需要包含的文件。
protoc-c --c_out=./ -I=./protobuf-c/out/ ./protobuf-c/out/speech.proto
-I=是表示需要包含的proto文件路径。