环境:

  • ubuntu 16.04 / macOS Catalina

最近要搞gRPC,以为现在新出的东西应该用起来挺方便的,但是按照官方的步骤安装过程中遇到了一些小问题,看了些博客才解决,于是记录一下。

编译安装

下载

在github下载gRPC项目,然后更新子模块:

git clone https://github.com/grpc/grpc.git

git submodule update --init

依赖

这部分比较慢,我一行命令下去,大半天团建回来还没下好......反正等就行了,超时了就重连再来。

接下来安装必要的依赖:

sudo apt-get install pkg-config

sudo apt-get install autoconf automake libtool make g++ unzip

sudo apt-get install libgflags-dev libgtest-dev

sudo apt-get install clang libc++-dev

mac可以通过Homebrew安装依赖:

brew install autoconf automake libtool

也可以直接brew install protobuf grpc安装,这里我已经下好了,就源码编译安装了。

protobuf

grpc默认使用protobuf作为序列化传输,因为都是自家的嘛。我们先安装protobuf,在grpc/third_party/protobuf/下:

git submodule update --init --recursive #更新第三方源码
sudo ./autogen.sh   #生成配置脚本
sudo ./configure    #生成Makefile文件,默认路径为/usr/local/
sudo make
sudo make install 
sudo ldconfig       #更新共享库缓存

然后protoc --version试一下是否成功安装。

grpc

grpc/目录下已经编写好了makefile,直接执行:

sudo make
sudo make install # 默认安装在/usr/local/目录。

这里编译的时候在ubuntu 16.04上可能会遇到ld的报错,意思大概是说你装了两个不同版本的libprotobuf.so,可能会导致冲突。上网搜索之后了解到这是因为ubuntu默认安装了一个低版本的protobuf,解决办法是卸载掉这个就好了,用上面编译安装的3.x版本:

sudo apt-get remove libprotobuf-dev

然后重新make一下就好了。

Hello world

学习新的语言和框架总是从hello world开始的嘛!在example/下有一些示例代码,我们用C++版本来测试一下。

cd examples/cpp/helloworld/
make
./greeter_server # 开启一个服务
# 在另一个terminal
./greeter_client # 打印出调用的结果:Hello world

好了,现在你又掌握了一种Hello world的写法,接下来就需要花点时间去耐心学习一下.proto的写法,和理解rpc的原理了。学好了这些,在求职和工作过程中就多了一件利器。


luuu
1 声望0 粉丝

在校研究生,在外实习