带有 gRPC 的 golang 协议缓冲区是否可以交叉编译并在不同的操作系统平台上使用?



这个问题专门关于在不同的操作系统平台上编译和使用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"`。这种情况经常发生,有时所有字段都有此问题,有时只有其中一些,有时对于给定的请求结构则没有。

另一个区别是底部的文件描述符对于两个版本完全不同。Windows版本长了大约40行。

如果您使用相同版本的基于 Go 的工具编译原型,您应该获得相同的输出。我会仔细检查两者是否是相同的版本。

最新更新