go で書かれたツールをホーム ルーター (R6300v2) で実行したい場合は、ホスト x64 とターゲット アーム用の go クロスコンパイラーを構築する必要があります。公式ドキュメントを読むのに数分かかりましたが、結果は次のように簡単でした。 (推奨学習: Go )
$ git clone .../go && cd go && git checkout go1.4.2 $ cd src $ GOOS=linux GOARCH=arm GOARM=5 ./make.bash
以前の GCC ツールチェーンのクロスコンパイルの経験によると、コンパイルには数分から 10 分以上かかります。その結果、私の E3 1230v3 256G Plextor M6S では、 Go (ライブラリを含む) のコンパイルにかかる時間は 20 秒未満、おそらく 10 秒未満でした。 git clone よりも高速です。
Go コンパイラは 9 つの命令セットをサポートします。コンパイラーの品質には、アーキテクチャーごとに重要な違いがあります。
amd64(也称为x86-64) 成熟的实现。 386(x86或x86-32) 与amd64端口相当。 arm(ARM) 支持Linux,FreeBSD,NetBSD,OpenBSD和Darwin二进制文件。没有其他端口广泛使用。 arm64(AArch64) 支持Linux和Darwin二进制文件。1.5中的新功能,没有其他端口那么好用。 ppc64, ppc64le (64位PowerPC大端和小端) 支持Linux二进制文件。1.5中的新功能,没有其他端口那么好用。 mips, mipsle (32位MIPS大端和小端) 支持Linux二进制文件。1.8中的新功能,没有其他端口那么好用。 mips64, mips64le (64位MIPS大端和小端) 支持Linux二进制文件。1.6中的新功能,没有其他端口那么好用。 s390x (IBM System z) 支持Linux二进制文件。1.7中的新功能,没有其他端口那么好用。 wasm (WebAssembly) 定位到WebAssembly平台。1.11中的新功能,没有其他端口那么好用。
ランタイム サポートは、マーク アンド スイープ ガベージ コレクター、有効な配列と文字列のスライス、ゴルーチンの有効なサポートなど、基礎となるオペレーティング システム インターフェイス コードなどを除き、すべてのポートで同じです。 (スタックなど)。需要に応じて拡大および縮小します。
コンパイラは、DragonFly BSD、FreeBSD、Linux、NetBSD、OpenBSD、macOS (Darwin)、Plan 9、Solaris、および Windows オペレーティング システムをターゲットにできます。
ソースからのみ構築できるシステムには、次の追加の制約が適用されます:
64 ビット PowerPC 上の Linux の場合、サポートされる最小カーネル バージョンは 2.6.37 です。つまり、Go はこれらのシステムでは CentOS 6 をサポートしていません。
以上がなぜ golang のコンパイルは速いのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。