回答

收藏

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

技术问答 技术问答 327 人阅读 | 0 人回复 | 2023-09-12

让我们比较 c 和 go: Hello_world.c :6 U7 T) H$ r& ^' o
    #includeint main(){     printf("Hello world!");}
    $ I% N) Y, `- a# s: D* ^# ~$ v0 H
Hello_world.go:
) L' d* S  y& z5 y! [
    package mainimport "fmt"func main(){     fmt.Printf("Hello world!")}
    / O% P# R" ?" D! S9 e5 W/ M
编译两者:" j* g& a( f; r
    $gcc Hello_world.c -o Hello_c $8g Hello_world.go -o Hello_go.8$8l Hello_go.8 -o Hello_go
    1 F( u" r2 s2 `. ~# o  q1 }( J! D
还有,这是什么?) r# D9 v3 t4 p0 C0 s% P  z
    $ls -ls... 5,4K 2010-10-05 11:09 Hello_c... 991K 2010-10-05 11:17 Hello_go& {! r5 t8 x5 C2 a- J
大约 1Mb 你好世界。你在跟我开玩笑吗?我做错了什么?
# Q( g  t& b  g# M# h' a$ s6 P3 v(仅去除 Hello_go -> 893K)2 T, r4 a6 [' ^) i% y% F
                                                                0 J6 g* Z2 U' a. R  \
    解决方案:                                                               
, A  m9 z5 F% W6 Y# F8 j3 B4 k                                                                如果使用的是基于 Unix 系统(如 Linux 或 Mac OSX),通过使用 可以尝试-w 标志构建可执行文件,删除可执行文件中包含的调试信息:
& C6 {: e* v* J$ U; d) F& I
    go build -ldflags "-w" prog.go% L0 Q+ r% V$ X' W$ R3 G4 Q9 L
大大降低了文件的大小。; M0 u4 U* {5 b+ M1 ~; D
有关更多详细信息,请访问 GDB 页面:http : //golang.org/doc/gdb
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则