Windows GRPC源码编译C++库——详细步骤

目录

前言:

一、环境准备

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版本 

下载地址:
(8条消息) windowsgrpcc++静态库-C++文档类资源-CSDN文库https://download.csdn.net/download/ManagerUser/86510933

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
以下是在 Windows编译 gRPC详细步骤: 1. 安装 Git 和 Visual Studio 在 Windows编译 gRPC,您需要先安装 Git 和 Visual Studio。您可以从以下链接下载和安装它们: - Git:https://git-scm.com/downloads - Visual Studio:https://visualstudio.microsoft.com/downloads/ 2. 克隆 gRPC 代码 打开 Git Bash 或者其他命令行工具,输入以下命令来克隆 gRPC 代码: ``` git clone -b v1.38.x https://github.com/grpc/grpc.git ``` 3. 安装依赖Windows编译 gRPC,您还需要安装一些依赖,包括 OpenSSL 和 protobuf。您可以使用 vcpkg 工具来安装它们。以下是安装步骤: - 下载 vcpkg 工具:https://github.com/microsoft/vcpkg - 打开命令行工具,进入 vcpkg 目录,使用以下命令安装 OpenSSL 和 protobuf: ``` .\vcpkg.exe install openssl:x64-windows protobuf:x64-windows ``` 4. 生成 Visual Studio 解决方案和项目 进入 gRPC 代码的根目录,在命令行工具中输入以下命令来生成 Visual Studio 解决方案和项目: ``` mkdir cmake_build cd cmake_build cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_TOOLCHAIN_FILE=..\third_party\vcpkg\scripts\buildsystems\vcpkg.cmake -DgRPC_SSL_PROVIDER=package -DgRPC_ZLIB_PROVIDER=package .. ``` 5. 构建 gRPC 打开生成的 Visual Studio 解决方案,选择 "Release" 配置,然后构建 gRPC 项目。 您可以使用 Visual Studio 中的菜单或者使用以下命令来构建: ``` cmake --build . --config Release ``` 6. 运行测试 构建完成后,在命令行工具中输入以下命令来运行 gRPC 的测试: ``` cd grpc cmake --build . --config Release --target grpc_cli cd cmake_build ctest -C Release --output-on-failure -j 4 ``` 以上就是在 Windows编译 gRPC 的步骤。注意,实际情况可能会因不同的环境而有所不同,这只是一个简单的指南。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值