目录
前言:
一、环境准备
1.1、安装cmake
1.2、安装Perl
1.3、安装golang
1.4、安装Visual Studio (推荐2022)
1.5、安装git
1.6、安装yasm
1.7、安装,配置openssl库
二、源码下载
2.1、grpc源码下载
2.2、第三方库下载
三、编译源码
3.1、新建.build
3.2、生产解决方案
3.3、编译
错误1
错误2
错误3:
错误4
3.4、生产库
四、静态库分享
前言:
GRPC,其实就是RPC框架的一种,前面带了一个g,代表是RPC中的大哥,龙头老大的意思,另外g也有global的意思,意思是全球化比较fashion,是一个高性能、开源和通用的 RPC 框架,基于ProtoBuf(Protocol Buffers) 序列化协议开发,且支持众多开发语言。面向服务端和移动端,基于 HTTP/2 设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
本人之前编译过一次grpc源码,但是最近需要别的系统版本,编译起来居然用了一天半时间,索性,乘晚上安静之际,随手写下来,以备不时之需。 下面详细介绍grpc编译.
最近有好多人私信我,希望帮助编译grpc库,没有及时看到信息。先将本人邮箱留下,有问题伙伴可以发送邮件,会在第一时间看到。邮箱:1255450653@qq.com.
一、环境准备
1.1、安装cmake
下载地址:https://cmake.org/download/
注意:选择添加环境变量。
1.2、安装Perl
下载地址:https://jingyan.baidu.com/article/9f7e7ec0b798ae6f281554e9.html
1.3、安装golang
下载地址:Go下载 - Go语言中文网 - Golang中文社区
1.4、安装Visual Studio (推荐2022)
下载地址:https://visualstudio.microsoft.com/zh-hans/vs/
注意:windows sdk选择10.0.2以上版本。
1.5、安装git
参考:Git
这部分可省略,因为github库下载源码非常慢。还不如直接下载zip包来的快。
1.6、安装yasm
下载网站:http://yasm.tortall.net/Download.html
下载完成之后yasm-1.3.0-win64.exe。将其名字改为yasm.exe,并将目录添加到系统环境变量PATH路径当中。
打开cmd,验证如下:
1.7、安装,配置openssl库
这步可以不用设置,跳过。
下载地址:https://download.csdn.net/download/ManagerUser/86510880
配置环境变量:
ok,至此,前期的准备工作就完成了。
二、源码下载
2.1、grpc源码下载
地址: GitHub - grpc/grpc: The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
下载zip速度较快。git 太慢了。
2.2、第三方库下载
grpc依赖了大量第三方库,但是光下载grpc源码,还不能完全下载 grpc依赖的库,网上有很多资料显示,用xxx命令,都是扯谈,没有半小时下载不下来,并且如果没有代理的话,会提示访问超时,完全不可用。
下面介绍一种最原始方式,也是最可行的方法。
不同版本grpc却依赖的库稍微有点差别,为了更为准确的了解grpc依赖的第三方库,就需要去grpc源码查看具体依赖的库。git上grpc源码根目录下third_party目录下,如图所示,所有蓝色库,都是需要我们手动下载。
注意:grpc/third_party/cares/cares依赖库。
将所有grpc依赖的库全部下载下来,并且拷贝到对于的目录下面。不能落下,否则在编译阶段报一些莫名的错误。
三、编译源码
3.1、新建.build
在grpc根目录下新建.build文件夹
3.2、生成解决方案
打开cmake gui界面,选择source code和 build目录。
点击Configure,弹出如下界面
选择Visual Studio版本和平台(x64或Win32)。点击Finish
库的安装目录尽量不要选择系统盘,要不在生产库文件时候,没有权限。
如果出现如下出错:
CMake Warning at third_party/abseil-cpp/CMakeLists.txt:70 (message):
A future Abseil release will default ABSL_PROPAGATE_CXX_STD to ON for CMake
3.8 and up. We recommend enabling this option to ensure your project still
builds correctly.
这个错误忽略就行。网上说要勾选ABSL_PROPAGATE_CXX_STD,大坑。
如果出现如下出错:
CMake Warning at cmake/ssl.cmake:55 (message):
gRPC_SSL_PROVIDER is "module" but BORINGSSL_ROOT_DIR is wrong
Call Stack (most recent call first):
CMakeLists.txt:255 (include)
将grpc_ssl_provider设置为package,就会自动去系统环境变量查找相应的库
再次Configure
出现Configure done,说明configure完成。
点击Generate。
出现Generating done说明已经生产Visual Studio工程文件,可以去.build文件夹下去查看,
点击Open Project或者右键单击grpc.sln,打开项目,可以选择编译Debug和Release
3.3、编译
右键单击ALL_BUILD,选择生产,开始编译。
往往这个步骤是最让人痛苦的阶段。
错误1
fatal error C1083: 无法打开包括文件: “stdalign.h”: No such file or directory
【项目】->【属性】->选择widnows sdk 版本到最新安装的版本
点击应用。确定。
错误2
error C2039: "Status": 不是 "google::protobuf::util" 的成员
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C2146: 语法错误: 缺少“;”(在标识符“Status”的前面)
解决办法:
可能是protobuf版本太新了,最新的版本是4.0,推荐使用3.19,下载成功之后,解压,拷贝到third_party/protobuf目录下替换就可以了。重新Configure
错误3:
error C2011: “sockaddr”:“struct”类型重定义
error C2143: 语法错误: 缺少“}”(在“常数”的前面)
error C2059: 语法错误:“常数”
error C2143: 语法错误: 缺少“;”(在“}”的前面)
error C2011: “sockaddr_in”:“struct”类型重定义
error C2011: “fd_set”:“struct”类型重定义
解决办法,参考:https://blog.csdn.net/weixin_41454036/article/details/108844486
错误4
error MSB8066: “D:\grpc-master\.build\CMakeFiles\1d6eed4bb9d57f066d15abcf1966767c\crypto_test_data.cc.rule;D:\g
rpc-master\third_party\boringssl-with-bazel\CMakeLists.txt”的自定义生成已退出,代码为 1。 [D:\grpc-master\.build\third_party\boringssl-with-bazel\crypto_test_data.vcxproj]
解决办法:
打开windows PowerShell
# 配置 GOPROXY 环境变量
$env:GOPROXY = "https://proxy.golang.com.cn,direct"
# 还可以设置不走 proxy 的私有仓库或组,多个用逗号相隔(可选)
$env:GOPRIVATE = "git.mycompany.com,github.com/my/private
然后,重试编译。
编译完成。
3.4、生成库
选择INSTALL,右键单击,生成。
查看生产的库目录:
以上步骤win10系统,64位库,32位库请在cmake 平台选择Win32,重新按照步骤编辑即可。
Release和Debug版本请在Visual Studio 解决方案配置选择即可。
四、静态库分享
编译确实比较麻烦,我在编译解决参考了网上博客不下20篇,没有一篇博客能指导我顺利走下来,所有将静态库分享出来,不想编译的朋友直接下载,永久收取5个积分。
32位静态库, debug版本和relase版本
64位静态库, debug版本和release版本 文章来源:https://www.toymoban.com/news/detail-402124.html
下载地址:
(8条消息) windowsgrpcc++静态库-C++文档类资源-CSDN文库https://download.csdn.net/download/ManagerUser/86510933文章来源地址https://www.toymoban.com/news/detail-402124.html
到了这里,关于Windows GRPC源码编译C++库——详细步骤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!