1. ホーム
  2. go

[解決済み] コンパイルしたファイルのサイズを小さくするには?

2023-01-23 19:55:34

質問

c と go を比較してみましょう。 Hello_world.c :

#include<stdio.h>
int main(){
    printf("Hello world!");
}

Hello_world.go。

package main
import "fmt"
func main(){
    fmt.Printf("Hello world!")
}

両方をコンパイルします。

$gcc Hello_world.c -o Hello_c 
$8g Hello_world.go -o Hello_go.8
$8l Hello_go.8 -o Hello_go

と......何なんでしょう?

$ls -ls
... 5,4K 2010-10-05 11:09 Hello_c
... 991K 2010-10-05 11:17 Hello_go

約1MB Hello world. 私をからかっているのですか? 私は何を間違えているのでしょうか?

(ストリップ Hello_go -> 893Kのみ)

どのように解決するのですか?

注:この回答は古くなっています

この回答は古くなったのでご注意ください。他の高得点の回答を参照してください。この投稿を削除したいのですが、受理された回答は削除することができません。


ファイルが大きくなることが問題なのでしょうか?私はGoを知らないのですが、Cプログラムの場合ではない、いくつかのランタイムライブを静的にリンクしていると推測されます。しかし、おそらくプログラムが大きくなればなるほど、それは心配することではありません。

説明したように ここで にあるように、Go ランタイムは静的にリンクするのが既定です。このページでは、動的リンクの設定方法についても説明しています。