goクロスコンパイル方法
2688 ワード
golangクロスコンパイル
に質問
golangは、あるプラットフォームで別のプラットフォームで実行可能なファイルをコンパイルする方法です.たとえばmac上でWindowsとlinuxで実行できるファイルをコンパイルします.では、mac上で64ビットlinuxの実行可能ファイルをコンパイルする方法について設定します.
ソリューション
golangのクロスコンパイルは、golangバージョンが1.5以上であることを保証し、本ソリューションのインスタンスコード1.9バージョンで実行されます.
コンパイルしたいファイルhello.go
hello.go
package main
import "fmt"
func main() {
fmt.Printf("hello, world
")
}
macで64ビットlinuxをコンパイルするコマンドコンパイルコマンド
bash:
GOOS=linux GOARCH=amd64 go build hello.go
上記のコードをコマンドコンソールで直接実行すると、64ビットlinuxの実行可能プログラムを生成できます.
パラメータ解析
ここでは2つの変数を使用します.
ARCH
OS version
linux
386/amd64/arm
>= Linux 2.6
darwin
386/amd64
OS X (Snow Leopard + Lion)
freebsd
386/amd64
>= FreeBSD 7
windows
386/amd64/arm
>= Windows 2000
他のプラットフォームをコンパイルするときは、上の表のパラメータに基づいてコンパイルを実行すればいいです.
拡張読書
ネットワーク上の多くのチュートリアルでは、次のコンパイルコマンドが表示される場合があります.
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build hello.go
そのうちCGO_ENABLED=0はC言語バージョンのGOコンパイラを使用することを意味し、パラメータが0に設定されている場合はC言語バージョンのコンパイラをオフにします.golang 1から5以降goはgo言語コンパイラを用いてコンパイルされる.golang 1.9ではCGOは使用されていませんENABLEDパラメータは正常にコンパイルできることが分かった.もちろん使用しても正常にコンパイルできます.例えばCGO_ENABLEDパラメータは1に設定されています.つまり、コンパイル中にCGOコンパイラを使用すると、正常にコンパイルできることに気づきました.実際にgoでCのライブラリを使用している場合、例えばimport「C」がgo buildをデフォルトで使用している場合、CGOコンパイラが起動します.もちろんCGO_を使用することができます.ENABLED=0は、goビルドがCGOコンパイラを使用するかどうかを制御します.以上、間違いがあればご指摘ください.
作者:ppmoonリンク:https://www.jianshu.com/p/4b345a9e768e出典:簡書簡書の著作権は著者の所有であり、いかなる形式の転載も著者に連絡して授権を得て出典を明記してください.