带有 gRPC 的 golang protocol buffers 可以在不同的 OS 平台上交叉编译和使用吗?
Can golang protocol buffers with gRPC be cross compiled and used on different OS platforms?
这个问题专门关于在不同的 OS 平台上编译和使用 golang 协议缓冲区(使用 gRPC),我还没有看到类似的问题。是否可以在 Windows 上编译一个 .proto 文件,然后在 Linux 上使用生成的文件?或者反之亦然?
我在 Windows 和 Linux 上编译了相同的 .proto 文件,diff 显示了不同的结果。一个区别是 Windows 编译版本有时会在请求结构的字段中重复 json,如下所示:Field1Name *type`protobuf ,bytes,1,opt,name=my_name,json=myName" json:"my_name,omitempty"`
而 Linux 版本是:Field1Name *type`protobuf ,bytes,1,opt,name=my_name" json:"my_name,omitempty"`
。这种情况经常发生,有时所有字段都有这个问题,有时只有其中一些,有时 none 对于给定的请求结构。
另外一个区别是两个版本底部的fileDescriptor是完全不同的。 Windows 版本长了大约 40 行。
如果您使用相同版本的基于 Go 的工具来编译原型,您应该得到相同的输出。我会仔细检查两者是否是相同的版本。
这个问题专门关于在不同的 OS 平台上编译和使用 golang 协议缓冲区(使用 gRPC),我还没有看到类似的问题。是否可以在 Windows 上编译一个 .proto 文件,然后在 Linux 上使用生成的文件?或者反之亦然?
我在 Windows 和 Linux 上编译了相同的 .proto 文件,diff 显示了不同的结果。一个区别是 Windows 编译版本有时会在请求结构的字段中重复 json,如下所示:Field1Name *type`protobuf ,bytes,1,opt,name=my_name,json=myName" json:"my_name,omitempty"`
而 Linux 版本是:Field1Name *type`protobuf ,bytes,1,opt,name=my_name" json:"my_name,omitempty"`
。这种情况经常发生,有时所有字段都有这个问题,有时只有其中一些,有时 none 对于给定的请求结构。
另外一个区别是两个版本底部的fileDescriptor是完全不同的。 Windows 版本长了大约 40 行。
如果您使用相同版本的基于 Go 的工具来编译原型,您应该得到相同的输出。我会仔细检查两者是否是相同的版本。