一尘不染

如何减少编译文件的大小?

go

让我们比较 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_go -> 893K)


阅读 236

收藏
2021-12-06

共1个答案

一尘不染

如果您使用的是基于 Unix 的系统(例如 Linux 或 Mac OSX),您可以尝试通过使用 -w 标志构建可执行文件来删除包含在可执行文件中的调试信息:

go build -ldflags "-w" prog.go

文件大小大大减少。

有关更多详细信息,请访问 GDB 页面:http : //golang.org/doc/gdb

2021-12-06