linux下安装grpc插件(c++和go语⾔)
在debian/ubuntu系统下,需要做如下准备操作:
$ [sudo] apt-getinstallbuild-essential autoconf libtoolpkg-config
如果你想要从源码编译并且运⾏测试,同时运⾏下⾯的安装:
$ [sudo] apt-getinstalllibgflags-dev libgtest-dev
$ [sudo] apt-getinstallclang libc++-dev
下拉源代码信息(包括⼦模块)
在编译之前,你需要下拉grpc的github仓库,并且下载grpc的⼀些依赖库,具体操作如下:
$ git submodule update --init
protoc安装
默认grpc使⽤protobuf,你需要protoc编译器来⽣成服务端和客户端的通信代码。如果你还没有安装protoc编译器,可以考虑编译位于
third_party中的protoc。
你可以使⽤下⾯的指令安装:
$ cd grpc/third_party/protobuf
$ make&& [sudo]makeinstall# ‘make’ should have been run by core grpc
在grpc根⽬录调⽤如下命令:
$make$ makeinstall
这样,grpc将会安装到你的系统⽬录中。
注意:使⽤make install安装之后,想要卸载grpc会⽐较困难。如果你之后想要移除grpc,或者想要升级到⼀个新的版本,这将会是个问题。对于这个问题,你可以修改Makefile中的prefix定义,在Makefile中,prefix原定义是  prefix ?= /usr/local 。go语言安装教程
如果你希望将grpc安装到其他⽬录,这个需要使⽤如下的步骤:
(1)修改make调⽤的Makefile⽂件中的prefix为你所想要安装的⽬录(这⾥假设为/xxx/yyy)
(2)修改~/.bashrc中的PATH变量(⽤于查grpc的plugin插件),设置如下:
export PATH=$PATH:/xxx/yyy/bin
(3)修改~/.bashrc 中的PKG_CONFIG_PATH变量,设置如下:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/xxx/yyy/lib/pkgconfig
(4)修改~/.bashrc 中的 C_INCLUDE_PATH, CPLUS_INCLUDE_PATH(⽤于查头⽂件位置)和LD_LIBRARY_PATH变量,设置如下:
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/xxx/yyy/include
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/xxx/yyy/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/xxx/yyy/lib
export LIBRARY_PATH=$LIBRARY_PATH:/xxx/yyy/lib
(5)调⽤source ~/.bashrc使设置⽣效
(6) 设置动态库查位置
在/etc/f.d中新建f⽂件,在其中添加/xxx/yy/lib⽬录
然后调⽤ldconfig,使动态库设置⽣效
(7)如果你想要编译grpc中⾃带的例⼦(examples),需要修改/xxx/yyy/lib/pkgconfig/grpc++.pc⽂件,修改prefix为/xxx/yyy。然后修改例⼦中的Makefile,在LD_FLAGS中移除-L/usr/local/lib。然后调⽤make clean, make进⾏编译。
关于在linux中安装go语⾔版本的grpc (这⾥不包括安装protoc,如果你需要安装protoc,可以参考博客中的《在linux中安装protobuf编译器和运⾏时环境》)
⾸先确保你使⽤的go语⾔版本为go1.6或者更⾼。你可以调⽤如下命令:
$ go version
安装grpc
安装⽅法为:
$ go get -/grpc
如果上述命令出现超时的问题,你可以采取下⾯的⽅式:
对于其中的/x/net,你也需要做类似的操作:
对于使⽤go1.11及以上版本的,可以考虑使⽤go mod的replace特性来创建包的⼀个别名(这个我没有实际操作过)。在你的项⽬⽬录调⽤:
$ go mod edit -/grpc=github/grpc/grpc-go@latest
$ go mod tidy
$ go mod vendor
$ go build -mod=vendor
对于需要使⽤的/x/net库,也需要做类似的操作。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。