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

新手上路,请多包涵

让我们比较一下 c 和 go: Hello_world.c :

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

你好_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)

原文由 zyrg 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 726
2 个回答

注意:此答案已过时

请注意,此答案已过时。请参考其他投票较高的答案。我想删除这篇文章,但无法删除已接受的答案。


是不是文件比较大的问题?我不知道 Go,但我会假设它静态链接了一些运行时库,而 C 程序并非如此。但是一旦你的程序变大,这可能就没什么好担心的了。

如此 所述,静态链接 Go 运行时是默认设置。该页面还告诉您如何设置动态链接。

原文由 Dirk Vollmar 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

 go build -ldflags "-w" prog.go

文件大小显着减小。

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

原文由 Amged Rustom 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏