web-dev-qa-db-ja.com

64ビットシステムで32ビットバイナリをコンパイルする

Goプログラムを64ビットシステムでコーディングしましたが、32ビットバイナリをコンパイルしたいと思います。

64ビットバイナリはうまく機能していますが、32ビットバイナリを作成する方法がわかりません。

どうすればできますか?

26
pluralism

ソースからGoをビルドした場合は、任意のCPUおよびOS用の追加のコンパイラーおよびライブラリーをビルドできます。 windows/AMD64を使用していて、windows/386用にビルドする場合は、windows/386用にコンパイルする必要があるすべてをビルドします。

set GOARCH=386  
cd %GOROOT%\src  
make.bat --no-clean  

それが終わったら、次のコマンドでwindows/386実行可能ファイルをビルドできます。

set GOARCH=386  
cd %YOUR_PROG_DIR%  
go build  

Windows/AMD64を使用しているので、Windows/386プログラムも実行/テストできるはずです。ただset GOARCH=386 Windows/386のコマンドを呼び出す前。

注意点:これはcgoをサポートしないため、cgoを使用するパッケージは使用できません。

21
alex

Windows 7 64ビットPCでこれを(コンパイラーをコンパイルせずに)達成する方法は、最初にWindows AMD64をインストールし、次に download 32bit Zipして2番目のフォルダーに解凍することでした。

\go\go32
\go\go64

次に、コマンドプロンプトウィンドウ内のPATHGOROOTを次のように調整します。

set PATH=\go\go32;%PATH%
set GOROOT=\go\go32\

次に戻って、以前64ビットを使用してコンパイルしていたアプリを再コンパイルしました。定期的に切り替えたい場合は、これらすべてを一括で設定できます。

7
miltonb

はい、ようやく問題を解決しました!ここにそれが私がやった方法です(私は実際に惨めに失敗しました!)。

  • 最初に行ったのは http://www.mingw.org/ からGCCをダウンロードすることでした。
  • 次にC:\ MinGW\binをPATH環境変数に追加します(MinGWがC:\ MinGwにインストールされていると想定しています)

  • Go build/go installを実行する前の次のことは、環境変数を設定することです。

  • コマンドプロンプトを開き、C:\ Go\srcに移動して、コマンドラインからall.batを実行します。
  • 次に、GOOS、GOARCH、CGO_ENABLEDをそれぞれ386、0のウィンドウに設定する必要があります(GOPATHを現在のGoプロジェクトがあるパスに設定する必要もあります)。
  • 次にmake.batおよびmake.bat --no-cleanを実行します。その後、32ビットシステム用のプロジェクトをビルドできます。これがお役に立てば幸いです。
4
pluralism