クラウド コンピューティングの発展に伴い、プラットフォーム間で実行する必要があるアプリケーションが増えています。Golang は強力に型付けされた言語として、この分野でも優れたパフォーマンスを発揮します。クロスコンパイルは、あるプラットフォーム環境でソース コードをコンパイルし、別のプラットフォームで実行するプロセスです。この記事では、Golang のクロスコンパイル処理について紹介します。
クロスコンパイル プロセス
まず、クロスコンパイル ツール チェーンをダウンロードする必要があります。 Golang の公式 Web サイトでは、次の図に示すように、プラットフォームに対応するダウンロード リンクを見つけることができます。
#対応するオペレーティング システム、CPU アーキテクチャ、およびバージョンを追加したら、任意のディレクトリに解凍します。
次に、コンパイル時に Golang が正しいツール チェーンを見つけられるように、ターミナルで環境変数を設定する必要があります。 macOS システムを例として、次のコマンドを入力します。
export GOROOT=/usr/local/go export GOOS=linux export GOARCH=amd64 export CGO_ENABLED=0 export GOBIN=$GOROOT/bin export PATH=$PATH:$GOBIN
このうち、GOROOT
は Golang のインストール パスを表し、GOOS
はターゲット オペレーティング システムを表します。 GOARCH
はターゲット CPU アーキテクチャを表します。 CGO_ENABLED
は Cgo を有効にするかどうかを表します。 GOBIN
はコンパイルされた実行可能ファイルのパスを表します。 PATH
が使用されますUnix/Linux システムでの設定用 環境変数のシステム変数。
次に、クロスコンパイルする Golang プログラム コードを作成またはダウンロードし、.go
ファイルとして保存します。たとえば、次のコードは Golang を使用して単純な Hello World プログラムを実装します。
package main import "fmt" func main() { fmt.Println("Hello, World!") }
次に、次のコマンドを使用してコードを実行可能ファイルにコンパイルします。
$ go build -v -o hello
Where, -v
パラメータは出力の詳細を示し、-o
パラメータはコンパイルによって生成される実行可能ファイルの名前を指定します。上記のコマンドで、hello
は生成された実行可能ファイルの名前を指定します。これは他の名前に置き換えることもできます。
コンパイルが完了すると、現在のプラットフォームで動作する実行可能ファイルが取得されます。次に、クロスコンパイル ツール チェーンを使用して、ターゲット プラットフォームで実行できるバイナリを生成する必要があります。次のコマンドを使用してクロスコンパイルします。
$ GOOS=linux GOARCH=arm GOARM=5 go build -v -o hello-arm5
上記のコマンドでは、GOOS
はターゲット オペレーティング システムを Linux として指定し、GOARCH
はターゲット CPU アーキテクチャを ARM として指定します。 , GOARM
ARMのバージョンを指定します。ここでは5と指定しています。このコマンド行は、現在のディレクトリに hello-arm5
という名前のバイナリ ファイルを生成します。
Linux と ARM に加えて、Golang は、macOS、Windows、FreeBSD、OpenBSD、NetBSD、DragonFlyBSD、Solaris、AIX などの他のオペレーティング システムとアーキテクチャ、および 386、amd64 などの他の CPU アーキテクチャもサポートしています。 、アーム、mips、mipsle、mips64、mips64le、ppc64、ppc64le、s390x。
クロスコンパイルに関する考慮事項
クロスコンパイルする場合は、次の点に注意する必要があります。
syscall
ライブラリの関数を使用する場合は、windows
、linux
、darwin などの特定のシステム コールを使用する必要があります。
など、ターゲット オペレーティング システムのインターフェイス。 概要
この記事では、ツール チェーンのダウンロードとインストール、環境変数の設定、コードのコンパイル、クロスコンパイルの注意事項など、Golang のクロスコンパイル プロセスを紹介します。 。クロスプラットフォームのアプリケーション開発には、クロスコンパイルが必須のスキルとなりますので、この記事がお役に立てば幸いです。
以上がgolangのクロスコンパイルプロセスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。