Golang可执行文件大小

时间:2015-09-17 09:38:23

标签: go

我搜索了有关构建Compact Go可执行文件的最新信息,但没有成功。大多数信息似乎已有几年的历史了。

我的程序:Rosettacode.org上的标准hello世界。 使用Fortran,我得到一个低于100 KB的exe文件。使用Go,exe文件高达2400 KB。

我的问题:我应该使用编译器开关还是编译指示?还有其他我不知道的工具或技巧(我是Go的初学者)。关于可执行文件大小的Go的未来计划是什么?在Linux下是什么样的 - 同样的事情?大型程序上的exe文件会发生什么?

背景:我在Windows 7上安装了go 1.5。我的项目正在编写(实际上是从其他语言迁移)一些命令行程序。拥有20个或更多大型Go exe文件会占用大量空间。好的,我知道空间很便宜所以我可以忍受它。但是,我相信这个问题的明确性会帮助很多人。

2 个答案:

答案 0 :(得分:3)

Go程序很大,因为它包含垃圾处理代码,goroutine调度代码,此外它几乎所有库都是静态链接的。它是如此设计。

FAQ Why is my trivial program such a large binary

答案 1 :(得分:2)

要减小可执行文件大小,可以指示链接器使用以下方法之一剥离调试符号:

go install -ldflags '-s'
go install -ldflags '-s -w'

我在一个相当大的可执行文件(GXUI样本之一)上尝试过它,这将它从~16M减少到~10M。添加-w到-s没有任何区别,但一如既往,您的里程可能会有所不同......

Here是所有链接器选项的完整列表。