golang-nutsからの親切で忍耐強い助けのおかげで、レシピは次のとおりです。
1)さまざまなターゲットプラットフォームおよびアーキテクチャ用にGoコンパイラをコンパイルする必要があります。これは、goインストールのsrcフォルダーから実行されます。私の場合、Goのインストールはこのように配置されているため、コンパイラをコンパイルするには、ユーティリティ/usr/local/go
を発行する必要があります。make
これを行う前に、いくつかの注意事項を知っておく必要があります。
クロスコンパイル時にCGOライブラリに問題があるため、CGOライブラリを無効にする必要があります。
コンパイルはそのフォルダで行う必要があるため、場所をソースディレクトリに変更することでコンパイルが行われます。
cd /usr/local/go/src
次に、Goコンパイラをコンパイルします。
sudo GOOS=windows GOARCH=386 CGO_ENABLED=0 ./make.bash --no-clean
GOOSパラメータとGOARCHパラメータを変更して、クロスコンパイルするOSとアーキテクチャごとにこの手順を繰り返す必要があります。
私のようにユーザーモードで作業している場合は、Goコンパイラがシステムディレクトリにあるため、sudoが必要です。それ以外の場合は、スーパーユーザーとしてログインする必要があります。Macでは、SUアクセスを有効化/構成する必要がある場合があります(デフォルトでは使用できません)が、Goをインストールできた場合は、すでにrootアクセス権を持っている可能性があります。
2)すべてのクロスコンパイラを構築したら、たとえば次の設定を使用して、アプリケーションを問題なくクロスコンパイルできます。
GOOS=windows GOARCH=386 go build -o appname.exe appname.go
GOOS=linux GOARCH=386 CGO_ENABLED=0 go build -o appname.linux appname.go
GOOSとGOARCHを、作成したいターゲットに変更します。
CGOで問題が発生した場合は、コマンドラインにCGO_ENABLED=0を含めてください。また、LinuxとMacのバイナリには拡張子がないため、ファイルを変えるために拡張子を追加することもできます。-o switchは、出力ファイルをc / c ++の古いコンパイラと同様にするようにGoに指示します。したがって、上記で使用したappname.linuxは他の拡張子にすることができます。