在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe

这篇具有很好参考价值的文章主要介绍了在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    grpc是google于2015年发布的一款跨进程、跨语言、开源的RPC(远程过程调用)技术。使用C/S模式,在客户端、服务端共享一个protobuf二进制数据。在点对点通信、微服务、跨语言通信等领域应用很广,下面介绍grpc在windows10上编译,这里以编译grpc v1.42.0版本为例,进行说明,如图(1)所示:

https://github.com/grpc/grpc/tree/v1.42.0/
在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe,C++,Git,C#,grpc,cmake,ninja,protoc
图(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++的桌面开发",然后一路默认,直到安装完成。

在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe,C++,Git,C#,grpc,cmake,ninja,protoc
图(2) 下载VS2019

在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe,C++,Git,C#,grpc,cmake,ninja,protoc
图(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的同名目录里。

在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe,C++,Git,C#,grpc,cmake,ninja,protoc
图(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_INSTALL=ON -DgRPC_BUILD_TESTS=OFF ./CMakeLists.txt

## 5) 设置Debug目录,并编译
cmake --build . --config Debug

## 6) 设置Release目录,并编译
cmake --build . --config Release

4 生成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)所示:

在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe,C++,Git,C#,grpc,cmake,ninja,protoc
图(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 greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

4.3 生成pb文件

    按Win+R快捷键,输入:cmd,依次输入如下命令:

## 1)切换到D盘
D:

## 2)进入protobuf目录
D:\protobuf

## 3)执行C++方式的protoc命令
protoc.exe -I=.\ --cpp_out=.\ --grpc_out=.\ --plugin=protoc-gen-grpc=".\grpc_cpp_plugin.exe" helloworld.proto

## 4) 执行Csharp方式的protoc命令
protoc.exe -I=.\ --csharp_out=.\ --grpc_out=.\ --plugin=protoc-gen-grpc=".\grpc_csharp_plugin.exe" helloworld.proto

    本例采用C++方式的protoc命令,如图(6)所示:

protoc.exe -I=.\ --cpp_out=.\ --grpc_out=.\ --plugin=protoc-gen-grpc=".\grpc_cpp_plugin.exe" helloworld.proto
在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe,C++,Git,C#,grpc,cmake,ninja,protoc
图(6) 按C++方式,生成pb文件

    或按C# (CSharp)方式,生成pb文件,如图(7)所示:

在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe,C++,Git,C#,grpc,cmake,ninja,protoc
图(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)所示表示不同的插件:

在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe,C++,Git,C#,grpc,cmake,ninja,protoc
图(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
在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe,C++,Git,C#,grpc,cmake,ninja,protoc
图(9) 下载Grpc.Tools工具,该包是C#版本的protoc包

    下载Grpc.Tools工具,得到以*.nupkg结尾的压缩包,这个*.nupkg后缀名改成*.rar,如图(10)所示:

在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe,C++,Git,C#,grpc,cmake,ninja,protoc
图(10) 下载Grpc.Tools,并修改后缀名

    然后将这rar文件解压,在grpc.tools\tools\windows_x64目录下,即可看到protoc.exe、gprc_csharp_plugin.exe文件,这2个文件用于生成C#版本grpc对应的pb文件,如图(11)所示:

在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe,C++,Git,C#,grpc,cmake,ninja,protoc
图(11) 在grpc.tools\tools\windows_x64里

参考文献

【1】 cmake编译grpc v1.42.0
【2】 grpc C++笔记文章来源地址https://www.toymoban.com/news/detail-691063.html

到了这里,关于在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Windows上编译和调试CoreCLR

    本文的唯一目的就是让你运行Hello World Window 7+ 确保C++ 工具已经被安装,默认是不安装的,所以要选择自定义模式,VS 2015 精简版不支持。 下载 CMake for windows,并把Cmake的目录添加到为PATH的系统变量里。 下载Python for windows 并安装,并把Python的目录地址添加到Path系统变量中。

    2024年02月11日
    浏览(33)
  • 【Python微信机器人】第一篇:在windows11上编译python

    我打算写一个系列,内容是将python注入到其他进程实现inline hook和主动调用。本篇文章是这个系列的第一篇,后面用到的案例是 注入python到PC微信实现基本的收发消息 。文章着重于python方面的内容,所以对于微信找收发消息的call不会去讲过程,有兴趣的可以直接百度搜 PC微信

    2024年02月08日
    浏览(45)
  • windows/linux/mac上编译open3d 0.17.0

    1、本文内容 windows/linux/mac上编译open3d 0.17.0 2、平台 通过cmake构建项目,跨平台通用 3、转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/131891820 clone源码,指定0.17.0版本 运行下面的命令或者保存至compile.bat运行 如果遇到 error C4996: ‘fmt::v9::detail::arg_mapper::map’: 被声明为

    2024年02月16日
    浏览(34)
  • golang工程——grpc-gateway 转发http header中自定义字段到grpc上下文元数据

    http header 转发到 grpc上下文 grpc网关可以将请求体内容转发到grpc对应消息中。那如何获取http header头中的信息,本文将介绍如何将http header转发到grpc上下文并采用拦截器,获取http header中的内容。 有些http header中的内置字段是会转发的比如Authorization,但是狠多自定义字段是转发

    2024年02月08日
    浏览(35)
  • 安装Solidworks出现报错:可执行文件VCRedist10\vcredist_x64.exe未成功安装/ 找不到vc_red.msi文件路径/ Windows不允许更新经过管理的播发产品

    我在安装solidworks时出现了如标题所示的各种报错,在网上到处找解决办法,捣鼓了三个小时终于弄好了,由于网上的方法都各自只能解决我一部分的问题,所以我把它们整合了一下,分享给大家(*^▽^*) 首先网上有说手动安装vc库的,但是我按照下图路径找到vc库之后发现,

    2024年02月11日
    浏览(200)
  • golang 工程组件:grpc-gateway 环境安装+默认网关测试

    grpc-gateway 顾名思义是专门是grpc的网关。也是一个protobuf的编译器,是一个proto的插件。 grpc-gateway就是将http请求处理后转发到对应grpc服务上。很多浏览器,或者客户端开箱不支持grpc,只支持传统的restful API。 grpc网关而且也支持负载,兼容不同版本。 官方文档 grpc-gateway 源码

    2024年02月08日
    浏览(44)
  • “被裁员之前,没得到任何风声,措手不及...” 一个在职6年测试工程师内心独白

    一个码农(软件测试工程师)的自白 小张: 我们用工作五年的积蓄,在这个一线城市买了房子,买了车子,然后领证。我也在6年前进入了一个很多人梦寐以求新的公司 码农的新生活开始了。在这家公司里,我第一次真正领略到“人外有人,天外有天”的含义。所在的团队各

    2023年04月24日
    浏览(47)
  • golang工程— grpc-gateway健康检查和跨域配置

    grpc健康检查网关跨域配置 grpc健康检查 grpc健康检查使用 服务端配置 网关配置 gateway.go 如果网关中设置了拦截器之类的进行鉴权判断,可以通过 FullName=\\\"/grpc.health.v1.Health/Check\\\" 去忽略鉴权 监控检查默认请求 http://localhost:8081/healthz grpc网关跨域配置 采用中间件的形式封装httph

    2024年02月06日
    浏览(39)
  • win10系统 C++环境 安装编译GRPC

    为了依赖的成功安装,采用gitee进行下载与更新。记得需要安装git软件。 安装命令: 在自己指定的目录下,鼠标右键,选择 git Bash Here 打开命令行 在grpc的目录下修改配置文件:.gitmodules 复制下面内容替换.gitmodules内容: 在grpc目录下,在git 上使用更新命令 使用cmake对grpc进行

    2024年02月07日
    浏览(38)
  • 解决: 0x803f7001 在运行Microsoft Windows 非核心版本的计算机上,运行“ slui.exe 0x2a 0x803f7001 “以显示错误文本,激活win10步骤流程。

      首先,按下 win + R 打开\\\"运行\\\",输入 regedit 后回车,打开注册表。   然后再注册表下输入地址 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSoftwareProtectionPlatform ,在该目录下找到 SkipRearm ,双击打开后,将数值 0 改为 1 ,确认保存后重新启动电脑即可,操作顺序如下图

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包