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つの変数を使用します.
  • GOOS:ターゲットオペレーティングシステム
  • GOARCH:ターゲットオペレーティングシステムのアーキテクチャ
  • OS
    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出典:簡書簡書の著作権は著者の所有であり、いかなる形式の転載も著者に連絡して授権を得て出典を明記してください.