windows平台下编译gRPC的坎坷之路和解决方法附上编译好的lib和头文件下载

PS:本文参考了很多大神的教程,如果对你有帮助,请为我们点个赞加个关注,谢谢。文中附有参考链接。

因为有应用场景的需求,需要用到gRPC。哦,你可能会问,什么是gRPC,容小生给你搬运一下官网的解释:

gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services.

各位看官看得懂吗,好吧,我也看不懂,毕竟我是四级考了三次也没有过的人。那咱们就站在巨人的肩膀上吧,用XX翻译下,大概就是:gRPC就是google搞的一套RPC,所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。如下图所示就是一个典型的RPC结构图。

呃,普及gRPC不在本文的范围。本文是记录一下在windows平台的gRPC编译。大家有没有发现,凡是开源的东西,在windows平台折腾就变得很麻烦,各种的编译加库,Linux下几个命令就搞定。

首先,把参考的文章附上:

https://blog.csdn.net/Mr_zhliang/article/details/83546996

https://blog.csdn.net/hk121/article/details/80334481

https://blog.csdn.net/diaoxuesong/article/details/78664663

https://www.pressc.cn/930.html

我们是站在世上的肩膀上。感谢以上的无私奉献的大神。

当然,如果你不想折腾,我把我编译好的放到云盘里,免积分下载

链接:https://pan.baidu.com/s/16oCPmj0R2nr6gAa0oed_Jg 
提取码:gfhs 

先装cmake-gui。

然后把所有的源代码下载:

protobuf:

源码下载路径:https://github.com/protocolbuffers/protobuf/releases/tag/v3.6.1

libcares 库:

源码下载路径:https://c-ares.haxx.se/download/

OpenSSL:

源码下载路径:https://www.openssl.org/source/

zlib:

源码下载路径:www.zlib.net/zlib-1.2.11.tar.gz


万里长城第步:编译OpenSSL,为什么要先编译它,,,,因为它里面没有需要的东西

(1)先安装工具perl:

(2)工具下载地址:https://www.activestate.com/activeperl/downloads

下载下来后直接安装。进入命令模式,输入perl -v 正确显示版本信息,安装成功,能找到命令。

(3)打开VS2017本机命令工具,当然2015/2019也行吧

 

注意后面某步不成功,请重新执行到这里继续:解压openssl文件夹,然后进入openssl文件目录,注意解压后的有可能是openssl-1.1.0k/openssl-1.1.0k/xxxxx这样的目录,要进入里面有很多文件夹那一级里面:

然后输入:Perl Configure VC-WIN64A no-shared no-asm -prefix=E:\openssl-build

Perl Configure代表我要配置编译文件,VC-WIN64A代表是VC64位的,no-shared no-asm代表静态库和不需要汇编,-prefix=填的是待会生成的vs工程目录放到这。成功会出现以下,若失败,提醒什么与目标计算机平台不匹配,关了,选择相对应的编译窗口。

接着,输入

nmake

然后出现一大堆鬼东西,对了,如果是配置的时候加入了no-shared命令,且你电脑没有安装dmake,会提醒你安装这个的,安装之后再来一次就可以了

无误之后,就是没有错误提示就代表成功了,然后输入

nmake test

出现在一堆东西,末尾会出现pass,代表成功

接着输入 

nmake install

成功之后去你刚才填入的那个目录里看。

把这个文件夹放到环境变量里面去。有人说是新建一个叫OPENSSL_BOOT_DIR的变量名称,如下,

但是我好像不太,我就放到系统变量那是,就是Path那

这步做好之后。

开始编译gRPC。是的,开始干它了。

(1)将准备好的libcares源码放入gRPC源码third_party\cares\cares 目录下:

(2)将准备好的zlib源码放到gRPC源码hird_party\zlib目录下:

(3)将准备好的protobuf源码放到 gRPC源码third_party\protobuf目录下:

(4)打开CMake工具,配置如下图:

点击Configure,然后弹出:

点击Finish,然后cmake就立刻configure,等待它完成,会提示Configuring done

如下图:

重点来了。一般来说,到这步为止都比较顺利的。但是,关键点来了,要改的地方

一、把gRPC_SSL_PROVIDER那个地方的module改成package

二、把

gRPC_MSVC_STATIC_RUNTIME

CARES_MSVC_STATIC_RUNTIME

protobuf_MSVC_STATIC_RUNTIME

这几个项的前面那个框勾选上。因为我们要生成的是静态库来调用的,不勾选会出现一大堆不匹配的问题。

再次点击Configure。然后再点Generate,就生成VS工程文件了

找到生成的VS工程文件目录,双击打开grpc.sln

然后在ALL_BUILD右键,生成。等待好长一段时间。。。。。。。。。

 

生成之后,单击,INSTALL,右键,仅用于项目,仅生成INSTALL

然后就生成了。

打开C盘目录C:\Program Files (x86)\grpc

但是,里面的lib,好像没有grpc的对不对,不错,它在你刚才那个grpc.sln所在文件夹里面,如果是Debug的,就是Debug文件夹里面,

把它复制到同个文件夹就行了。

你觉得是不是就这样完事了???其不然

我发现,这里生成的protobuf存在问题,只有三个protobuf的.lib文件,且不以后用的时候会有无法识别 的外部链接错误

需要把protobuf单独重新编译

首先,打开cmake-gui,选择源代码目录里面的cmake,和生成目录,点configure。选择编译器,选择版本,要选64位的,对应之前的

 

 

点Finish

然后就Configure了。注意了,这里也要把protobuf_MSVC_STATIC_RUNTIME勾上

点Generate,就可以生成vs的工程文件了

找到并打开protobuf.sln文件

在VS中先生成ALL_BUILD,然后仅生成INSTALL

就不截图了。

然后,打到刚才那个protobuf.sln所在目录。如下图

把这些lib复制到刚才的grpc的lib同个文件夹就可以了。最后得到的lib如下:

头文件如下:

 

截图不易。如果对你有帮助,请加个关注,评论点个赞,谢谢。

  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值