如何动态链接grpc库C ++?

时间:2018-08-17 13:28:35

标签: c++ protocol-buffers grpc

我正在尝试动态链接grpc greeting_client示例。 我正在尝试使用libgrpc ++。so,libprotobuf.so.10,libgrpc.so.3,libgrpc ++ _ reflection.so.1文件进行链接。

我已将这些文件添加到我的/ usr / lib目录中,现在我正尝试为greeting_client生成可执行文件。

我正在使用的命令是:g++ hello.pb.o hello.grpc.pb.o greeting_client.o -L/usr/lib -Wl,--no-as-needed -lgrpc++_reflection -Wl,--as-needed -ldl -o greeting_client -L/usr/local/include/google/ -L/usr/local/include/grpc -L/usr/local/include/grpc++

错误:

 /usr/bin/ld: cannot find -lgrpc++_reflection
 collect2: error: ld returned 1 exit status

我在/ usr / lib目录中有用于grpc ++ _ reflection的.so文件。 我可能缺少有关动态链接的内容。您能否指出如何动态链接示例的grpc库?

1 个答案:

答案 0 :(得分:1)

经过研究,我找到了解决方案,问题是链接程序正在寻找libgrpc ++ _ reflection.so,但是我有libgrpc ++ _ reflection.so.14.0.0

一个快速的技巧是将libgrpc ++ _ reflection.so符号链接到libgrpc ++ _ reflection.so 答案在于g ++的-l选项,调用ld。如果您查看此命令的手册页,则可以执行以下操作:

g++ -l:libgrpc++_reflection.so.14.0.0 [...]
or: g++ -lgrpc++_reflection.so [...] , 

如果您的libs路径中有一个名为libgrpc ++ _ reflection.so的符号链接