linux下安装grpc插件 (c++和go语言)

八英里1022 · · 585 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在debian/ubuntu系统下,需要做如下准备操作:

$ [sudo] apt-getinstallbuild-essential autoconf libtoolpkg-config

如果你想要从源码编译并且运行测试,同时运行下面的安装:

$ [sudo] apt-getinstalllibgflags-dev libgtest-dev

$ [sudo] apt-getinstallclang libc++-dev

下拉源代码信息(包括子模块)

在编译之前,你需要下拉grpc的github仓库,并且下载grpc的一些依赖库,具体操作如下:

$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc$ cd 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 。

如果你希望将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/ld.so.conf.d中新建grpc.conf文件,在其中添加/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 -u google.golang.org/grpc

如果上述命令出现超时的问题,你可以采取下面的方式:

$ git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc

对于其中的golang.org/x/net,你也需要做类似的操作:

$ git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net

对于使用go1.11及以上版本的,可以考虑使用go mod的replace特性来创建golang.org包的一个别名(这个我没有实际操作过)。在你的项目目录调用:

$ go mod edit -replace=google.golang.org/grpc=github.com/grpc/grpc-go@latest

$ go mod tidy

$ go mod vendor

$ go build -mod=vendor

对于需要使用的golang.org/x/net库,也需要做类似的操作。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:八英里1022

查看原文:linux下安装grpc插件 (c++和go语言)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

585 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传