grpc_out: protoc-gen-grpc: 插件失败,状态码为 1

grpc_out: protoc-gen-grpc: Plugin failed with status code 1

我已经为 QNX 7 (ARM) 平台交叉编译了 gRPC (v1.27.3)。我正在使用我们的系统 (QNX ARM v3.11.4) 已经可用的 protobuf。

我使用以下 cmake 命令为编译过程构建 gRPC

cmake -DCMAKE_CROSSCOMPILING=1 -DgRPC_BUILD_TESTS=OFF -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_SSL_PROVIDER=package -DgRPC_ZLIB_PROVIDER=package -DOPENSSL_CRYPTO_LIBRARY=$QNX_TARGET/aarch64le/usr/lib/libcrypto.a -DOPENSSL_SSL_LIBRARY=$TARGET/aarch64le/usr/lib/libssl.a -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/tmp/qnxarm/toolchain.cmake -DCMAKE_INSTALL_PREFIX=/tmp/qnxarm/inst ../..

make plugins

make -j4 

sudo make install

编译后,我可以在 /tmp/qnxarm/inst 文件夹中看到二进制文件。

我在我们的代码中复制了这些二进制文件来编译 QNX 应用程序。

编译时遇到这个问题:

<local_directory>/grpc/aarch64/qnx/bin/grpc_cpp_plugin: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--grpc_out: protoc-gen-grpc: Plugin failed with status code 1.
lib/qmonitor/proto/CMakeFiles/QMonitorProto.dir/build.make:105: recipe for target 'lib/qmonitor/proto/QAicMonitorInternal.grpc.pb.cc' failed
make[2]: *** [lib/qmonitor/proto/QAicMonitorInternal.grpc.pb.cc] Error 1

请帮我看看哪里出了问题?或者应该如何解决这个问题。

我们需要在lib文件夹中生成的gRPCTargets.cmake文件中添加PATH吗?

您已经为您的 QNX ARM 系统编译了 gRPC 工具——所以您制作的 grpc_cpp_plugin 版本应该是 运行 在您的 QNX 系统上,而不是在您的构建主机上。

这种事情的通常方法是为您的构建主机制作第二份 gRPC 副本,然后指示您的应用程序构建 link 来自交叉构建的库,但是调用 grpc_cpp_plugin 为构建主机编译。