GolangNote

Golang笔记

让go 编译生成的文件体积小一些的方法

Permalink

go 编译生成的文件很大,一个hello world 就1.5M,可以用下面命令,多加两个参数使其变小一些。

go 编译生成的文件体积小一些的方法

Bash: go build
1
go build -ldflags "-s -w"

参数的意思:

  • -ldflags: 表示将后面的参数传给连接器(5/6/8l)
  • -s:去掉符号信息
  • -w:去掉 DWARF 调试信息

这是一个hello.go 程序:

Go:
1
2
3
4
5
6
7
package main

import "fmt"

func main() {
    fmt.Println("Hello, 世界")
}

看看使用前后的大小对比:

Bash: go build
1
2
3
4
5
6
$ go build
$ ls -l
-rwxr-xr-x 1 root root 1570112  9月 14 22:28 hello
$ go build -ldflags "-s -w"
$ ls -l
-rwxr-xr-x 1 root root 1093504  9月 14 22:29 hello

变小了好多,但是要注意:

  • -s 去掉符号表(这样 panic 时,stack trace 就没有任何文件名/行号信息了,这等价于普通C/C+=程序被strip的效果)
  • -w 去掉 DWARF 调试信息,得到的程序就不能用 gdb 调试了

两个可以分开使用,实际项目中不建议做这些处理,多费点空间也没关系。

本文网址: https://golangnote.com/topic/66.html 转摘请注明来源

Related articles

go交叉编译方法

假设开发环境是ubuntu 32 位,目标机是ubuntu 64 位,下面是交叉编译的示例...

golang 实现的基于web的文件管理-filebrowser

FileBrowser 在指定目录中提供了一个文件管理界面,可用于上传,删除,预览,重命名和编辑文件。它允许创建多个用户,每个用户都可以有自己的目录。它可以用作独立的应用程序。...

Golang 生成防识别的图片验证码

验证码 captcha 是对抗密码强力破解、垃圾信息的有效方式,一般用于用户注册、登录,当检测到频繁发帖时也会启用验证码。下面介绍用golang 生成防机器识别的图片验证码。...

Write a Comment to "让go 编译生成的文件体积小一些的方法"

Submit Comment Login
Based on Golang + fastHTTP + sdb | go1.22.3 Processed in 0ms