[解決済み] コンパイルしたファイルのサイズを小さくするには?
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 ランタイムは静的にリンクするのが既定です。このページでは、動的リンクの設定方法についても説明しています。
関連
-
[解決済み] Goでマップにキーが含まれているかどうかを確認するには?
-
[解決済み] goで文字列の連結を効率的に行う方法
-
[解決済み] Goで複数行の文字列はどのように書くのですか?
-
[解決済み] Goでファイルが存在するかどうかを確認する方法は?
-
[解決済み] ゼロ終端のバイト配列を文字列に変換するにはどうすればよいですか?
-
[解決済み] Goを使って大きなファイルを効率よくダウンロードするにはどうしたらいいですか?
-
[解決済み] golangでは、マップから値のスライスを取得する良い方法はありますか?
-
[解決済み] 構造体の値をマップの値として設定すると、"cannot assign" エラーが発生するのはなぜですか?重複
-
[解決済み] Goでマップをクリアするには?
-
[解決済み] 複数のゴルーチンが1つのチャンネルをリッスンする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] GolangでMkdirを使ってネストされたディレクトリを作成するには?
-
[解決済み] GoのToString()関数
-
[解決済み] スライスを格納する interface{} 上の範囲
-
[解決済み] go モジュール内のローカルパッケージへのアクセス (go 1.11)
-
[解決済み] Go で子プロセスの標準出力パイプをリダイレクトする
-
[解決済み] 文字列を小文字に変換する方法を教えてください。
-
[解決済み] golangにおけるバックティック(``)とダブルクォート("")の違いは何ですか?
-
[解決済み] ...interface{}の意味 (ドット・ドット・ドット・インターフェース)
-
[解決済み] gc」と「gccgo」の主な相違点は何ですか?
-
[解決済み] Goにはラムダ式というものがあるのですか?