grpc安装(windows or Linux)

news/2025/2/28 20:22:18/文章来源:https://www.cnblogs.com/runtimeerror/p/18618031

grpc安装(windows or Linux)

下载源码

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

一、使用Git克隆gRPC到本地

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

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

二、安装依赖

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

git submodule update --init

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

[submodule "third_party/abseil-cpp"]path = third_party/abseil-cppurl = https://gitee.com/suuair/abseil-cpp.git
[submodule "third_party/benchmark"]path = third_party/benchmarkurl = https://gitee.com/chahan/benchmark.git
[submodule "third_party/bloaty"]path = third_party/bloatyurl = https://gitee.com/GgBoy_ssz/bloaty.git
[submodule "third_party/boringssl-with-bazel"]path = third_party/boringssl-with-bazelurl = https://gitee.com/GgBoy_ssz/boringssl.git
[submodule "third_party/cares/cares"]path = third_party/cares/caresurl = https://gitee.com/RicLee/c-ares.git
[submodule "third_party/envoy-api"]path = third_party/envoy-apiurl = https://gitee.com/RicLee/data-plane-api.git
[submodule "third_party/googleapis"]path = third_party/googleapisurl = https://gitee.com/GgBoy_ssz/googleapis.git
[submodule "third_party/googletest"]path = third_party/googletesturl = https://gitee.com/bosspoi/googletest.git
[submodule "third_party/libuv"]path = third_party/libuvurl = https://gitee.com/RicLee/libuv.git
[submodule "third_party/opencensus-proto"]path = third_party/opencensus-protourl = https://gitee.com/RicLee/opencensus-proto.git
[submodule "third_party/opentelemetry"]path = third_party/opentelemetryurl = https://gitee.com/EBServerStudy/opentelemetry-proto.git
[submodule "third_party/protobuf"]path = third_party/protobufurl = https://gitee.com/EBServerStudy/protobuf.git
[submodule "third_party/protoc-gen-validate"]path = third_party/protoc-gen-validateurl = https://gitee.com/arzhe/protoc-gen-validate.git
[submodule "third_party/re2"]path = third_party/re2url = https://gitee.com/GgBoy_ssz/re2.git
[submodule "third_party/xds"]path = third_party/xdsurl = https://gitee.com/EBServerStudy/xds.git
[submodule "third_party/zlib"]path = third_party/zliburl = 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/855619.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang内存模型与源码解析

0、引言 本篇笔记用于记录作者在学习Golang的GC模型之前,对Golang内存模型的学习。目前使用的Go版本为1.22.4 1、Golang内存管理宏观结构 假设我们每次向内存池申请空间时,都需要频繁地向操作系统发出请求,这不仅会增加内存分配的时间,还可能引入竞争和锁的开销,从而导致性…

图床试验

本文来自博客园,作者:Glowingfire,转载请注明原文链接:https://www.cnblogs.com/Glowingfire/p/18617999

一文搞定理解RPC

前言RPC概念RPC协议RPC组成RPC协议RPC框架RPC的优点RPC与HTTP的区别 前言 RPC的概念相信很多软件从业人员或多或少都接触过,从开发到测试都可能需要跟它打交道。 但是对于为什么要用RPC?RPC的优点是什么?RPC是什么原理?它跟HTTP有什么不同?相信并不是每个人都比较熟悉。 那…

全场景一站式2024最新vmware环境下安装win7并且破解QTP

目录VMwareVMware和Ubuntu下载链接下载Win 7 系统各个操作系统网站激活码是什么查看是否激活激活操作vmware下安装ubuntu创建虚拟机下载VMtool灰色灰色按键点击不了下载提示有问题原因文件传递共享文件借助外界U盘有了VMTool就可以直接拖拽!!!!有了VMTool就可以全屏化——倒…

20222321 2024-2025-1 《网络与系统攻防技术》实验八实验报告

一.实验内容 (1)Web前端HTML 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。 (2)Web前端javascipt 理解JavaScript的基本功能,理解DOM。 在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎…

数量

技巧 比例型 出现一个比例,存在四种倍数关系倍数 你们有啥公因子,我也必须有尾数 出现乘法,分析个位,考虑尾数 。乘法中出现5和10尾数就确认了奇偶 与偶数相乘一定是偶数,与奇数相乘可能为偶数也可能为奇数拓展猜题 当 A = B*C ,求A ,考虑A的倍数 工程问题 利润问题 求最…

LVGL学习 - Visual Studio外部“.c.h”文件添加

LVGL项目工程添加“.c.h”文件后 “C1083”“LNK2019”报错的解决方法一、首先把文件添加至工程,现有项选择所需添加的“.c.h”文件但还是会有如下报错,解决方法在第2步。二、“.c”文件需要添加“extern "C"” 下图截至官方文档我试了只添加“extern "C"…

组合数学+ybt题解

加法原理 乘法原理 排列数 从 \(n\) 个数中任取 \(m\) 个元素的排列的方案数,表示为 \(A^m_n=\frac{n!}{(n-m)!}\) \(0!=1\) 全排列 \(A^n_n\) 组合数 从 \(n\) 个元素中取出 \(m\) 个元素的组合的个数,表示为 \(\dbinom{n}{m}= \frac{A^m_n}{m!}=\frac{n!}{m!(n-m)!}\) 如何…

苍穹外卖day02

JWT令牌、ThreadLocal、分页查询bug记录知识点记录新增员工新增员工需要填写创建人id和修改人id两个属性,这两个属性应该填本账户的id。 通过拦截器可以解析出JWT令牌中包含的登录员工id信息,但是该如何传递给Service的save方法? ThreadLocal并非一个Thread,而是Thread的局…

年底裁员开始了,大家做好准备吧!

各大互联网公司的接连裁员,政策限制的行业接连消失,让今年的求职雪上加霜,想躺平却没有资本,还有人说软件测试岗位饱和了,对此很多求职者深信不疑,因为投出去的简历回复的越来越少了。 另一面企业招人真的变得容易了吗?有企业HR吐槽,简历确实比以前多了好几倍,其实是变…