首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何减小编译后的文件大小?

如何减小编译后的文件大小?
EN

Stack Overflow用户
提问于 2010-10-05 15:29:49
回答 12查看 52K关注 0票数 93

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

代码语言:javascript
运行
复制
#include<stdio.h>
int main(){
    printf("Hello world!");
}

Hello_world.go:

代码语言:javascript
运行
复制
package main
import "fmt"
func main(){
    fmt.Printf("Hello world!")
}

编译这两个:

代码语言:javascript
运行
复制
$gcc Hello_world.c -o Hello_c 
$8g Hello_world.go -o Hello_go.8
$8l Hello_go.8 -o Hello_go

还有..。那是什么?

代码语言:javascript
运行
复制
$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 )

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-10-05 15:36:54

注意:此答案已过时

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

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

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

票数 32
EN

Stack Overflow用户

发布于 2014-01-15 19:04:27

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

代码语言:javascript
运行
复制
go build -ldflags "-w" prog.go

文件大小显著减小。

有关更多详细信息,请访问地理数据库的页面:http://golang.org/doc/gdb

票数 94
EN

Stack Overflow用户

发布于 2016-05-27 02:50:54

2016年的答案:

  1. 使用Go 1.7

使用go build -ldflags "-s -w"编译

代码语言:javascript
运行
复制
➜ ls -lh hello
-rwxr-xr-x 1 oneofone oneofone 976K May 26 20:49 hello*

  1. 然后使用upx,从1.6开始不再需要goupx

代码语言:javascript
运行
复制
➜ ls -lh hello
-rwxr-xr-x 1 oneofone oneofone 367K May 26 20:49 hello*
票数 51
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3861634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档