环境:
- 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的原理了。学好了这些,在求职和工作过程中就多了一件利器。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。