【问题标题】:grpc_out: protoc-gen-grpc: Plugin failed with status code 1grpc_out:protoc-gen-grpc:插件失败,状态码为 1
【发布时间】:2020-07-08 04:05:28
【问题描述】:

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

我使用以下 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?

【问题讨论】:

    标签: grpc qnx


    【解决方案1】:

    您已经为您的 QNX ARM 系统编译了 gRPC 工具,因此您制作的 grpc_cpp_plugin 版本预计将在您的 QNX 系统上运行,而不是在您的构建主机上运行。

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

    【讨论】:

    • 感谢 Will Miles 的回复。
    • 我正在使用已安装文件夹中的 grpc 二进制文件来编译我的 QNX 应用程序(与 arm 兼容)。你能解释一下你回答的第二段吗? (指令部分)还有为什么我们需要主机 grpc_cpp_plugin 的第二个副本?因为该二进制文件将用于 x86 机器,但这里我们正在为 arm 编译 QNX。
    • grpc_cpp_plugin 是工具链的一部分,就像编译器和链接器一样。它用于创建一些 C++ 文件进行编译,因此它需要在 x86 构建主机上运行。它仅在构建过程中使用;它不需要安装在您的 QNX 目标上。
    • 在构建 QNX 应用程序时如何提及此工具链路径?我已经在 PATH 变量中包含了 grpc_cpp_plugin。
    • 我已经成功编译并生成了二进制文件。现在要使用这个二进制文件,我需要提到 grpc_cpp_plugin 的路径。那么我需要使用 gRPCTargets.cmake 来提供路径或任何其他方法吗?
    猜你喜欢
    • 2019-07-28
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多