protoc和protobuf(协议缓冲区)有什么区别



有人可以澄清协议缓冲区和协议之间的区别吗?谷歌搜索只显示协议缓冲区。我看到protobuf编程语言版本和protoc操作系统-86_32的命名约定是不同的。它们是不同的还是相同的?

在使用张量流时我需要同时安装两者吗?虽然

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.

"protobuf"或"Protocol buffers"是序列化格式和/或相关工具的名称。

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

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

通常的过程是:

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

有些工具则相反,在平台中从您自己的类型工作("代码优先"而不是"合同优先"方法(

最新更新