个人网站能备案吗,网站上线做什么,上传网站程序,江西中恒建设集团有限公司网站grpc是google于2015年发布的一款跨进程、跨语言、开源的RPC(远程过程调用)技术。使用C/S模式#xff0c;在客户端、服务端共享一个protobuf二进制数据。在点对点通信、微服务、跨语言通信等领域应用很广#xff0c;下面介绍grpc在windows10上编译#xff0c;这里以编译grpc … grpc是google于2015年发布的一款跨进程、跨语言、开源的RPC(远程过程调用)技术。使用C/S模式在客户端、服务端共享一个protobuf二进制数据。在点对点通信、微服务、跨语言通信等领域应用很广下面介绍grpc在windows10上编译这里以编译grpc v1.42.0版本为例进行说明如图(1)所示
https://github.com/grpc/grpc/tree/v1.42.0/图(1) 下载grpc v1.42.0版本 1 安装编译工具
1.1 安装VS2019 下载VS2019,官网地址 https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/ 个人地址 https://pan.baidu.com/s/1VaQC5_CprbTtp8mbPWCaBA 提取码uo1b 双击该安装包选中使用C的桌面开发然后一路默认直到安装完成。 图(2) 下载VS2019 图(3) 选中“使用C的桌面开发”即可 1.2 安装git git官网 ttps://git-scm.com/ git的安装方法进参考这篇文件 git详细安装教程
1.3 安装cmake cmake官网 https://cmake.org/download/ cmake的安装方法参考这篇文件 cmake安装
1.4 安装nasm nasm官网 https://www.nasm.us/ nasm的安装方法参考这篇文件 nasm安装
1.5 安装ninja ninja官网 https://ninja-build.org/ ninja的安装方法参考这篇文件 ninja安装
2 配置工程
2.1 Git配置ssh git配置ssh请参考这篇文章 https://www.cnblogs.com/yiven/p/8465054.html
2.2 修改zlib的版本号 将grpc\third_party\zlib\CMakeLists.txt里的第一行cmake版本号改成如下
cmake_minimum_required(VERSION 2.8...3.22)2.3 下载第三方依赖包 在https://github.com/grpc/grpc/tree/v1.42.0/third_party链接里
https://github.com/grpc/grpc/tree/v1.42.0/third_party下载编译所需的第三方依赖包具体如下
abseil-cpp
benchmark
bloaty
boringssl
c-ares
data-plane-api
googleapis
googletest
libuv
opencensus-proto
opentelemetry-proto
protobuf
protoc-gen-validate
re2
xds
zlib将这些第三方依赖包下载后解压把它们放到grpc\third_party的同名目录里。 图(4) 手动下载第三方依赖包 或者在这个链接里下载 https://pan.baidu.com/s/1fplVSH39XML3pRnshFGnVA 提取码dair
3 使用cmake编译grpc 打开Git 克隆grpc工程然后设置第三方的依赖库再使用make命令编译。
## 1) 克隆grpc工程
git clone --recurse-submodules -b v1.42.0 https://gitee.com/mirrors/grpc## 2) 进入grpc工程
cd grpc## 3) 同步第三方模块
git submodule sync## 4使用VS2019构建静态库
cmake -G Visual Studio 16 2019 -DgRPC_INSTALLON -DgRPC_BUILD_TESTSOFF ./CMakeLists.txt## 5) 设置Debug目录并编译
cmake --build . --config Debug## 6) 设置Release目录并编译
cmake --build . --config Release4 生成protobuf文件
4.1 提取protoc 编译成功后在grpc\third_party\protobuf\Release目录会看到protoc.exe、libprotoc.lib等文件 在grpc\Release\grpc_cpp_plugin.exe、grpc_csharp_plugin.exe将其拷贝出来放到D:\protobuf,如图(5)所示 图(5) 拷贝protoc.exe、grpc_cpp_plugin.exe、grpc_csharp_plugin.exe 4.2 创建一个helloworld.proto文件 helloworld.proto的内容如下 //helloworld.proto
syntax proto3;option java_multiple_files true;
option java_package io.grpc.examples.helloworld;
option java_outer_classname HelloWorldProto;
option objc_class_prefix HLW;package helloworld;// The greeting service definition.
service Greeter {// Sends a greetingrpc SayHello (HelloRequest) returns (HelloReply) {}
}// The request message containing the users name.
message HelloRequest {string name 1;
}// The response message containing the greetings
message HelloReply {string message 1;
}4.3 生成pb文件 按WinR快捷键输入:cmd依次输入如下命令
## 1)切换到D盘
D:## 2)进入protobuf目录
D:\protobuf## 3)执行C方式的protoc命令
protoc.exe -I.\ --cpp_out.\ --grpc_out.\ --pluginprotoc-gen-grpc.\grpc_cpp_plugin.exe helloworld.proto## 4) 执行Csharp方式的protoc命令
protoc.exe -I.\ --csharp_out.\ --grpc_out.\ --pluginprotoc-gen-grpc.\grpc_csharp_plugin.exe helloworld.proto本例采用C方式的protoc命令如图(6)所示
protoc.exe -I.\ --cpp_out.\ --grpc_out.\ --pluginprotoc-gen-grpc.\grpc_cpp_plugin.exe helloworld.proto图(6) 按C方式生成pb文件 或按C# (CSharp)方式生成pb文件如图(7)所示 图(7)按C#(CSharp)方式生成pb文件 5 C和C#版本的protoc
5.1 C、C#共同的protoc protoc是根据插件grpc_XXX_plugin.exe和命令 --XXX_out 参数来生成不同语言的pb文件的。protoc.exe既可以共用也可以单独分开。这里介绍共用的protoc如图(8)所示表示不同的插件 图(8) grpc_XXX_plugin.exe表示不同的语言插件 grpc通过protoc文件进行数据传递。这里给出C和C#版本protoc链接 https://pan.baidu.com/s/1RjUeI-89M8FkYuXDCMsMFg 提取码s56c 对于其他语言版本的protoc比如Java、Note.js、Ruby、Python等版本的protoc需要按照本文第1~4节来编译grpc源码在grpc\Release和grpc\thitd_party\protobuf\Release目录就可以得到protoc。
5.2 C#单独的protoc C#版本的protoc在NuGet.org里有官方版本下载它放在Grpc.Tools工具里如图(9)所示
https://www.nuget.org/packages/Grpc.Tools/2.57.0#show-readme-container图(9) 下载Grpc.Tools工具该包是C#版本的protoc包 下载Grpc.Tools工具得到以*.nupkg结尾的压缩包这个*.nupkg后缀名改成*.rar如图(10)所示 图(10) 下载Grpc.Tools并修改后缀名 然后将这rar文件解压在grpc.tools\tools\windows_x64目录下即可看到protoc.exe、gprc_csharp_plugin.exe文件这2个文件用于生成C#版本grpc对应的pb文件如图(11)所示 图(11) 在grpc.tools\tools\windows_x64里 参考文献
【1】 cmake编译grpc v1.42.0 【2】 grpc C笔记