web-dev-qa-db-ja.com

Golangバイナリは移植可能ですか?

私は主にLinuxユーザーですが、クロスプラットフォームにしたいアプリケーションをGoで開発しているとします。私はあちこち検索しましたが、以下を解決する情報を見つけることができないようです:

  1. AMD64 Ubuntuシステムでgo installバイナリを使用する場合、他の誰か 64ビットUbuntu/Debianシステムでも動作しますか?
  2. go installを使用してx86_64バイナリを構築し、32ビットDebianlikesですぐに実行できるようにするにはどうすればよいですか?
  3. Windowsを使用してWindows上で実行されるバイナリを作成する必要がある場合、Windowsシステムが64ビットであっても、x86_64用の実行可能ファイルがビルドされることをどのように確認できますか?

実際の私の質問は、「goのリンカー/コンパイラはどの程度静的/移植可能か」に要約されます。

34
cat
  1. はい、そうです。これは基本的に、Goで書かれたバイナリだけでなく、64ビットLinux用にコンパイルされたすべてのバイナリにも当てはまります(Goが依存していない共有ライブラリを除く)
  2. ビルド前にGOOSおよびGOARCH環境変数を設定できます:GOOS=windows GOARCH=386 go build(またはgo installまたは何でも)、など
  3. デフォルトでは、実行中のシステム用にバイナリが構築されますが、これは必要ありません-2を参照してください
42
joshlf