問題
コンパイラのプラットフォームで実行することができる別のプラットフォームをgolang提出する方法。例えば、Mac、LinuxのWindows上でコンパイルするファイルを実行することができます。マックの実行可能ファイルを64ビットのLinuxをコンパイルする方法:だから私たちの問題は、に設定されています。
ソリューション
クロスコンパイラgolang golangバージョン1.5以上が、本解決策は、例えばコードのバージョン1.9を実行することを保証します。私たちは、hello.go hello.goのファイルをコンパイルしたいです
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
Mac上で64ビットのLinuxコマンドはbashをコンパイルするためのコマンドをコンパイルします。
GOOS=linux GOARCH=amd64 go build hello.go
コマンドコンソール64上で直接実行する上記のコードは、Linuxの実行可能ファイルを生成することができます。パラメータ解析は、ここでは2つの変数を使用しています。
GOOS:ターゲットオペレーティングシステムのGOARCH:ターゲット・オペレーティング・システム・アーキテクチャ
OS | ARCH | OSのバージョン - | - | --- Linuxの| 386 / AMD64 /アーム|> =のLinux 2.6ダーウィン| 386 / AMD64 | OS X(Snow Leopardは+ライオン)のFreeBSD | 386 / AMD64 |> = FreeBSDの7窓| 386 / AMD64 |> = Windows 2000の
その上でパラメータ上記の表によると、他のプラットフォームをコンパイル時間をコンパイルします。さらに、次のコンパイルコマンドが表示されることがあり、多くのウェブチュートリアルで読んで
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build hello.go
前記0は、GOのCGO_ENABLED = C言語コンパイラのバージョンを意味するコンパイラの言語バージョンを閉じたときに0 Cをパラメータ。golang1.5のでコンパイルする言語コンパイラを使用して行くために行きます。golang1.9のどれもまだコンパイルすることができたCGO_ENABLEDパラメータを使用していません。もちろん、あなたはまた、通常のコンパイルを使用することができます。例えば、CGO_ENABLEDパラメータは、コンパイラのコンパイルプロセスにおけるCGOの使用は、私はまだ通常のコンパイルを見つけることができ、1に設定されています。あなたがCライブラリを使用している場合、実際には、そのようなことはもちろん、我々はコンパイラを構築行くCGOを使用するかどうかを制御するCGO_ENABLED = 0を使用することができ、CGOのデフォルトコンパイラを開始する時期インポート「C」を構築行くの使用として、それらに行きます。