grpc库的编译需要依赖多个三方库,官方建议通过./.gitmodules去获取依赖库,但我的linux环境是不能联网的,必须离线安装。
查看./.gitmodules文件,其实是去github把代码拉取到gprc的thirdparty/对应的目录下,具体如下
将编译过程中缺少的三方库在windows下载好,拷贝至对应的目录即可
编译过程中会报错unrecognized command line option ‘-mfloat-abi=hard’,上网上搜索原因为GCC版本高于4.8,而这行命令在新的GCC中已去掉了,我的当前版本为4.8.5,然而我还是升级到了9.3.0,最后编译成功;
另外我们公司使用的grpc版本为1.22.1
我的服务端启动后卡死,pstack查看具体原因,原来卡死在grpc_tracer_init()函数内,cpu占用100%,查看grpc的issue发现这是一个已解决bug(当前最新为1.27.0版本)但我们的gcc不支持编译(当前grpc要求gcc版本最低为4.8.9),因此只能按照此issue的方式修改grpc源码,重新编译,具体方式如下:
https://github.com/joda01/grpc/commit/3a54951b546424a930dafc5006