2015-11-23 36 views
24

私は主にLinuxユーザーだとしますが、私はクロスプラットフォームになりたいと思うGoでアプリケーションを開発しています。私の周りで検索しましたが、私は次のことを免除するための情報を見つけることができないよう:Golangバイナリは移植可能ですか?

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

私の質問は「スタティック/ポータブルはどのようにリンカ/コンパイラになるの?

+1

を参照してください、私はあなたが求めているのかわからないんだけど。バイナリは、同じOSとアーキテクチャを持つシステム間で移植可能です。あなたが別の方法を指定しない限りGOはホストGOOSとGOARCHのバイナリをビルドします。 64ビットバイナリを使用して32ビットシステムで実行することはできません。 – JimB

+0

これは、クロスプラットフォームを意図したバイナリを作成した私の経験ではありません。 – cat

+2

あなたの質問に答えるには:「まったく」。単にこれが不可能であるためです。コンパイラ/リンカ/ローダ/ツールチェーンはこれを行うことができません。 GoogleのクロスコンパイルはGoで簡単です。 – Volker

答えて

32
  1. はい、そうです。 GOOS=windows GOARCH=386 go build:これはだけでなく、移動中に書かれたもの(Goはに依存していない共有ライブラリを除く)
  2. あなたは、建物の前GOOSGOARCH環境変数を設定することができ、64ビットのLinux用にコンパイルされた基本的にすべてのバイナリの真実であります(またはgo installまたは何でも)、など
  3. デフォルトではバイナリは、あなたが実行しているシステムのために構築されますが、これは必要ありません - 2
関連する問題