7

go buildバイナリを使用すると、結果が2MBを超える可能性があることに気付きました。ただしgccgo、バイナリの使用は35k未満です。

使用中に気付いたもう1つの問題gccgoは、生成されたバイナリが別のLinuxボックスで実行できないことです(libgo.so私は信じていません)が、go buildバイナリは正常に実行されます(したがって、バイナリには実行に必要なものがすべて含まれているためです)。これを行う方法はありgccgoますか?

4

3 に答える 3

8

-staticフラグを使用する必要があります。

-staticオプションを使用して、完全に静的なリンクを実行します(gcコンパイラのデフォルト)。

http://golang.org/doc/install/gccgo

于 2013-03-26T17:34:13.410 に答える
5

-static-libgoオプションを使用すると、システムライブラリを動的にリンクしながら、libgoを静的にリンクできます。(これはgccgoにのみ適用されます)。

于 2013-03-27T15:30:56.970 に答える
0

go 1.8以降では、goがCGO_ENABLED=1(デフォルトは1)で構築されている場合、ネイティブコンパイルは動的にリンクします。を実行して、この変数を確認してくださいgo env CGO_ENABLED。go buildの実行時に環境変数CGO_ENABLEDを0に設定することにより、静的にリンクに切り替えることができます。

CGO_ENABLED=0 go build

ところで、クロスコンパイルは静的リンケージを自動的に使用します。

于 2017-11-14T15:16:15.220 に答える