Golang学习实战笔记-基础 > golang实战之grpc微服务编程
protobuf 安装

protobuf 程序是将通用的pb文件转成对应代码格式源代码。例如在对应go语言他可以将 自己定义的proto文件转成 gprc.pb.go 文件而且会生成对应的结构体,client,server文件。 很容易和目标代码结合。

项目GitHub地址    https://github.com/protocolbuffers/protobuf

protobuf 包里面 已经包含了 csharp,java,js,php,python,ruby的扩展,在编译安装了protobuf 后可根据自己的需求安装指定语言的扩展。

直接下载编译好的二进制包:

1、下载protobuf的编译器protoc

地址:https://github.com/google/protobuf/releases

window:

    下载: protoc-3.3.0-win32.zip

    解压,把bin目录下的protoc.exe复制到GOPATH/bin下,GOPATH/bin加入环境变量。

    当然也可放在其他目录,需加入环境变量,能让系统找到protoc.exe

linux:

    下载:protoc-3.3.0-linux-x86_64.zip 或 protoc-3.3.0-linux-x86_32.zip

    解压,把bin目录下的protoc复制到GOPATH/bin下,GOPATH/bin加入环境变量。

    如果喜欢编译安装的,也可下载源码自行安装,最后将可执行文件加入环境变量。


编译安装方式:

1. 下载源码包

https://github.com/protocolbuffers/protobuf/archive/v3.11.2.tar.gz

2   ./autogen.sh

./autogen.sh 
+ mkdir -p third_party/googletest/m4
+ autoreconf -f -i -Wall,no-obsolete
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
configure.ac:81: installing './ar-lib'
configure.ac:76: installing './compile'
configure.ac:46: installing './config.guess'
configure.ac:46: installing './config.sub'
configure.ac:48: installing './install-sh'
configure.ac:48: installing './missing'
benchmarks/Makefile.am: installing './depcomp'
parallel-tests: installing './test-driver'
+ rm -rf autom4te.cache config.h.in~
+ exit 0

3.  ./configure

./configure --prefix=/usr/local/protobuf --libdir=/usr/lib

4. make && sudo make install

。。。。
libtool: install: /usr/bin/install -c .libs/libprotoc.so.22.0.2T /usr/lib/libprotoc.so.22.0.2
libtool: install: (cd /usr/lib && { ln -s -f libprotoc.so.22.0.2 libprotoc.so.22 || { rm -f libprotoc.so.22 && ln -s libprotoc.so.22.0.2 libprotoc.so.22; }; })
libtool: install: (cd /usr/lib && { ln -s -f libprotoc.so.22.0.2 libprotoc.so || { rm -f libprotoc.so && ln -s libprotoc.so.22.0.2 libprotoc.so; }; })
libtool: install: /usr/bin/install -c .libs/libprotoc.lai /usr/lib/libprotoc.la
libtool: install: /usr/bin/install -c .libs/libprotobuf-lite.a /usr/lib/libprotobuf-lite.a
libtool: install: chmod 644 /usr/lib/libprotobuf-lite.a
libtool: install: ranlib /usr/lib/libprotobuf-lite.a
libtool: install: /usr/bin/install -c .libs/libprotobuf.a /usr/lib/libprotobuf.a
libtool: install: chmod 644 /usr/lib/libprotobuf.a
libtool: install: ranlib /usr/lib/libprotobuf.a
libtool: install: /usr/bin/install -c .libs/libprotoc.a /usr/lib/libprotoc.a
libtool: install: chmod 644 /usr/lib/libprotoc.a
libtool: install: ranlib /usr/lib/libprotoc.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin" ldconfig -n /usr/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/lib
   
 /bin/mkdir -p '/usr/local/protobuf/bin'
  /bin/bash ../libtool   --mode=install /usr/bin/install -c protoc '/usr/local/protobuf/bin'
libtool: install: /usr/bin/install -c .libs/protoc /usr/local/protobuf/bin/protoc
 /bin/mkdir -p '/usr/local/protobuf/include'
 /bin/mkdir -p '/usr/local/protobuf/include/google/protobuf'
 /usr/bin/install -c -m 644  google/protobuf/descriptor.proto google/protobuf/any.proto google/protobuf/api.proto google/protobuf/duration.proto google/protobuf/empty.proto google/protobuf/field_mask.proto google/protobuf/source_context.proto google/protobuf/struct.proto google/protobuf/timestamp.proto google/protobuf/type.proto google/protobuf/wrappers.proto '/usr/local/protobuf/include/google/protobuf'
 /bin/mkdir -p '/usr/local/protobuf/include/google/protobuf/compiler'
 /usr/bin/install -c -m 644  google/protobuf/compiler/plugin.proto '/usr/local/protobuf/include/google/protobuf/compiler'
 /bin/mkdir -p '/usr/local/protobuf/include'
 /bin/mkdir -p '/usr/local/protobuf/include/google/protobuf'

安装指定语言protobuf扩展

安装protobuf 后可以根据自己的需要安装指定的模块,进入到对应的目录,该目录下面有readme文件说明该扩展如何安装的步骤。

举例:

比如想要安装 Python的 protobuf扩展 ,首先进入到python 目录中,文件列表如下

python setup.py build
python setup.py test
python setup.py install