Waf可识别protobuf却无法找到grpc++库的问题排查与解决咨询
问题分析与解决:WAF找不到grpc++库但能找到protobuf
为什么能找到protobuf却找不到grpc++?
conf.check_cfg本质是调用pkg-config工具查找库,protobuf能被识别是因为系统里存在对应的protobuf.pc配置文件,且pkg-config能搜索到它;而grpc++要么没生成对应的.pc配置文件,要么该文件不在pkg-config的默认搜索路径里。- 另一种可能:grpc++的
.pc文件名不是grpc++.pc,部分编译安装场景下会命名为grpcpp.pc,这时用package='grpc++'自然匹配不到。
如何让WAF找到grpc++库?
方法1:让pkg-config识别grpc++的配置文件
- 先检查系统里是否存在grpc++相关的
.pc文件:find /usr/local -name "grpc*.pc" - 如果找到
grpc++.pc或grpcpp.pc,把它所在的目录(通常是/usr/local/lib/pkgconfig)加入pkg-config的搜索路径:export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH - 如果查到的文件名是
grpcpp.pc,需要把WAF脚本里的package='grpc++'改成package='grpcpp'。
方法2:绕过pkg-config,直接指定库路径检查
如果不想依赖pkg-config,可以改用conf.check_lib直接指定库路径:
# 检查/usr/local/lib下的grpc++库 conf.check_lib(lib='grpc++', path='/usr/local/lib', uselib_store='GRPC') # 若需要头文件路径,可手动添加编译选项 conf.env.append_value('CFLAGS', '-I/usr/local/include') conf.env.append_value('CXXFLAGS', '-I/usr/local/include')
内容的提问来源于stack exchange,提问作者Thundercleez
相关产品推荐
相关产品推荐

