protoc和protobuf(Protocol Buffer)有什么区别

What is the difference between protoc and protobuf (Protocol Buffer)

可以澄清一下 protocol buffer and protoc 之间的区别吗?谷歌搜索仅显示协议缓冲区。我发现 protobuf-programming language-version 和 protoc-operating system-86_32 的命名约定不同。他们是不同的还是相同的?

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

protoc --version

是 3.6,但我的 pip 在抱怨

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

"protobuf" 或 "protocol buffers" 是序列化格式的名称 and/or 相关工具。

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

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

通常的流程是:

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

一些工具以相反的方式工作,在您的平台中使用您自己的类型("code first" 而不是 "contract first" 方法)