【C++】gRPC开发环境搭建(Windows & Linux)

由于github链接国内有时访问不了,导致安装grpc及其依赖时会报错,因此采用gitee安装,并更换其依赖为对应的gitee地址。windows选择MinGW进行编译,Linux下使用普通的make即可。

下载源码

这里使用 gRPC 最新版本源代码进行编译和安装,版本号为 v1.50.0, 以下为安装步骤:

一、使用Git克隆gRPC到本地

在终端中打开某一文件夹,建议新建一个单独存放 gRPC 源代码的文件夹,输入:

git clone -b v1.50.0 https://github.com/grpc/grpc

如果github访问不了,我将grpc v1.50版本搬运至gitee,同时完成了后续的修改,大家只需clone后跳到编译部分.

git clone https://gitee.com/invalid_args/grpc_v1.50.git

安装依赖

gRPC 编译时需要安装一些第三方依赖,使用命令:

git submodule update --init

将会自动安装,但由于国内网络或者其他原因导致下载速度非常慢,所以我们需要手动修改"grpc/.gitmodules"将第依赖安装源更换为国内 gitee 同步仓库,下载效率将会大大改善,"grpc/.gitmodules"文件如下:

[submodule "third_party/abseil-cpp"]
	path = third_party/abseil-cpp
	url = https://gitee.com/suuair/abseil-cpp.git
[submodule "third_party/benchmark"]
	path = third_party/benchmark
	url = https://gitee.com/chahan/benchmark.git
[submodule "third_party/bloaty"]
	path = third_party/bloaty
	url = https://gitee.com/GgBoy_ssz/bloaty.git
[submodule "third_party/boringssl-with-bazel"]
	path = third_party/boringssl-with-bazel
	url = https://gitee.com/GgBoy_ssz/boringssl.git
[submodule "third_party/cares/cares"]
	path = third_party/cares/cares
	url = https://gitee.com/RicLee/c-ares.git
[submodule "third_party/envoy-api"]
	path = third_party/envoy-api
	url = https://gitee.com/RicLee/data-plane-api.git
[submodule "third_party/googleapis"]
	path = third_party/googleapis
	url = https://gitee.com/GgBoy_ssz/googleapis.git
[submodule "third_party/googletest"]
	path = third_party/googletest
	url = https://gitee.com/bosspoi/googletest.git
[submodule "third_party/libuv"]
	path = third_party/libuv
	url = https://gitee.com/RicLee/libuv.git
[submodule "third_party/opencensus-proto"]
	path = third_party/opencensus-proto
	url = https://gitee.com/RicLee/opencensus-proto.git
[submodule "third_party/opentelemetry"]
	path = third_party/opentelemetry
	url = https://gitee.com/EBServerStudy/opentelemetry-proto.git
[submodule "third_party/protobuf"]
	path = third_party/protobuf
	url = https://gitee.com/EBServerStudy/protobuf.git
[submodule "third_party/protoc-gen-validate"]
	path = third_party/protoc-gen-validate
	url = https://gitee.com/arzhe/protoc-gen-validate.git
[submodule "third_party/re2"]
	path = third_party/re2
	url = https://gitee.com/GgBoy_ssz/re2.git
[submodule "third_party/xds"]
	path = third_party/xds
	url = https://gitee.com/EBServerStudy/xds.git
[submodule "third_party/zlib"]
	path = third_party/zlib
	url = https://gitee.com/RicLee/zlib.git
	# When using CMake to build, the zlib submodule ends up with a
	# generated file that makes Git consider the submodule dirty. This
	# state can be ignored for day-to-day development on gRPC.
	ignore = dirty

打开 grpc/.gitmodules 文件,更新为上述内容

执行命令 git submodule sync 同步 URL

git submodule sync

执行命令 git submodule update --init 下载第三方依赖

git submodule update --init

下载完成后即可开始编译

Windows

环境: MinGW + CMake

如果gcc版本超过11,需要对部分源码进行修改

\third_party\abseil-cpp\absl\synchronization\internal\graphcycles.cc文件中,添加一行

#include<limits>

windows下还需要修改<your_grpc_path>\third_party\re2\util\pcre.h中的503行 :

mutable int32_t     hit_limit_;
# 修改为: 
mutable int hit_limit_

然后即可执行以下操作开始编译:

mkdir build 
cd build
cmake .. -G "MinGW Makefiles"
mingw-make.exe -j8

img

之后以管理员身份打开 cmd 或者 powershell, cd 到grpc/build目录,执行mingw-make install -j8即可将grpc安装到program files (x64)目录

mingw-make install -j8 

Linux

Linux下同样需要在\third_party\abseil-cpp\absl\synchronization\internal\graphcycles.cc文件中,添加一行

#include<limits>

然后开始编译

mkdir build
cd build
cmake ..
make -j8
sudo make install

验证

官方提供了一套测试样例,位于 grpc/examples/目录下,找到 cpp/helloworld 文件夹,这里存放我们需要测试的程序.

同样cmake + make后,运行server程序和client程序即可.

注: 需要有protobuff环境

大部分内容来自该作者,链接:https://blog.csdn.net/qq_37434641/article/details/127561281

posted @ 2024-12-19 22:11  RunTimeErrors  阅读(69)  评论(0)    收藏  举报