2017-08-10 13 views
0

この質問は、異なるOSプラットフォーム上でgolPCプロトコルバッファ(gRPCを使用)をコンパイルして使用することについてのものです。 Windows上で.protoファイルをコンパイルして、Linux上で生成したファイルを使用することは可能ですか?またはその逆?gRPCを使用したgolangプロトコルバッファをクロスコンパイルして、異なるOSプラットフォームで使用できますか?

WindowsとLinuxの両方で同じ.protoファイルをコンパイルして、diffが異なる結果を示しました。 1つの違いは、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"`です。これはたくさん起こります。時にはすべてのフィールドにこの問題があります。時にはそれらのうちのいくつかだけが、時にはリクエスト構造体のためのものもありません。

もう1つの違いは、下のfileDescriptorが2つのバージョンで完全に異なることです。 Windowsのバージョンは約40行長くなっています。

+1

試しましたか?もしそうなら、あなたはどんな問題に遭遇しましたか? – Adrian

+0

はい、試してみましたが、動作しているようですが、すべての可能なケースをテストすることはできません。この練習は許可されているか、受け入れられているかgoはクロスプラットフォームであり、生成されたファイルは.goファイルなので、ファイルが異なることは奇妙なことです。 – darkwing

+1

私はそれが奇妙であることに同意します。同じGoベースのツールの同じバージョンを使ってプロトをコンパイルする場合、同じ出力が得られるはずです。私は両方が同じバージョンであることを再確認します。 – Adrian

答えて

1

同じGoベースのツールを使用してプロトをコンパイルする場合は、同じ出力が得られるはずです。私は両方が同じバージョンであることを再確認します。

関連する問題