gRPC是google开发的一个开源rpc微服务框架,易用跨平台,官方网站上对linux Mac 支持很好,给出了完善的编译解决方案,但是在windows上很难用特别是编译这部分,
本文汇总下windows编译遇到的问题及解决方案:
引用一个前人写的编译攻略,Windows+VS2017使用gRPC - 我来乔23 - 博客园 (cnblogs.com)
可能是版本较早对现有版本并不是很支持。文中大部分可用,只是crypoto 模块编译 yasm 部分对现有版本存在编译问题, 导致crypoto ssl 加密模块编译失败
问题原因:
yasm 最新的版本是2010年左右版本 ,版本较老,无法编译最新的asm汇编指令导致
p256-x86_64-asm.asm:1957: error: instruction expected after label
问题报错。
解决方案:
用nasm代替 yasm 下载最新的nasm代码安装,Index of /pub/nasm
https://www.nasm.us/pub/nasm/releasebuilds/2.15rc12/win64/nasm-2.15rc12-installer-x64.exe
安装好之后,找到crypoto 模块的汇编编译目录 \.build\third_party\boringssl-with-bazel\crypto.dir 在工程目录搜索 nasm.props 文件
找到 <CompilerNasm> ...yasm.exe</CompilerNasm>
替换上面标签中的yasm为 安装好后的nasm.exe 替换为
<CompilerNasm> "nasm的安装目录/nasm.exe</CompilerNasm>
重新cmake 生成的VS工程,编译通过!