【问题标题】:What is the difference between protoc and protobuf (Protocol Buffer)protoc 和 protobuf(Protocol Buffer)有什么区别
【发布时间】:2018-08-16 06:54:48
【问题描述】:

能否澄清protocol buffer and protoc 之间的区别?谷歌搜索只显示协议缓冲区。我看到 protobuf-programming language-version 和 protoc-operating system-86_32 的命名约定是不同的。它们是不同的还是相同的?

在使用 tensorflow 时是否需要同时安装两者?虽然

protoc --version

是 3.6 但我的点数在抱怨

tensorflow-gpu 1.7.0 has requirement protobuf>=3.4.0, but you'll have protobuf 2.6.1 which is incompatible.

【问题讨论】:

  • protoc 是一个编译器(例如,从 protobuf 消息生成您的 java 类),而协议缓冲区是一种序列化用于通信或存储数据的数据的方法。您的 protobuf 库存在版本问题,因为 tensorflow 需要至少 3.4.0 版本的 protobuf,但您使用的是 2.6.1

标签: tensorflow protocol-buffers protoc


【解决方案1】:

“protobuf”或“protocol buffers”是序列化格式和/或相关工具的名称。

protoc 是一个特定的 protobuf 工具,特别是 Google 实现的“.proto”解析器和代码生成器(以及其他一些东西)

“.proto”是一种模式 DSL,用于描述您计划在应用程序中使用的消息 - 它是基于文本的。

通常的流程是:

  1. 为您的消息编写或获取 .proto
  2. 通过 protoc 或任何其他特定于库的生成器工具运行 .proto 以获得目标平台的消息类型
  3. 将这些生成的消息类型添加到您的应用程序中
  4. 导入/引用与您选择的工具/平台相匹配的 protobuf 库
  5. 构建

有些工具反过来工作,在您的平台上使用您自己的类型(“代码优先”而不是“合同优先”方法)

【讨论】:

    猜你喜欢
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    相关资源
    最近更新 更多