C 如何在Go中构建发布版本二进制文件?
在C中,我们可以构建二进制文件(目标文件和可执行文件)的调试版本或发布版本。我们怎样才能在围棋中做到这一点 您可以指示链接器使用C 如何在Go中构建发布版本二进制文件?,c,go,build,release,C,Go,Build,Release,在C中,我们可以构建二进制文件(目标文件和可执行文件)的调试版本或发布版本。我们怎样才能在围棋中做到这一点 您可以指示链接器使用 go install -ldflags '-s' 我只是在一个相当大的可执行文件(其中一个示例)上进行了尝试,这将它从~16M减少到~10M。和往常一样,您的里程可能会有所不同 是所有链接器选项的完整列表。在Go中,通常没有调试版本或发布版本 默认情况下,go build将符号和调试信息与二进制文件相结合。但是,您可以使用go build-ldflags“-s-w”
go install -ldflags '-s'
我只是在一个相当大的可执行文件(其中一个示例)上进行了尝试,这将它从~16M减少到~10M。和往常一样,您的里程可能会有所不同
是所有链接器选项的完整列表。在Go中,通常没有调试版本或发布版本
默认情况下,
go build
将符号和调试信息与二进制文件相结合。但是,您可以使用go build-ldflags“-s-w”
删除符号和调试信息。这里有一些相关文档-。您是对的,但我认为有一个很好的理由,剥离符号并不常见-例如,如果您收到关于野外恐慌的报告,如果有用于提供信息的stacktrace的符号,那就太好了。我认为“-s”(省略符号表和调试信息)已经包括“-w”(省略矮人符号表),所以不需要同时指定这两个。在我试过的可执行文件中,“-s-w”给出的大小与“-s”的大小完全相同。看起来-s对GOOS=darwin没有影响,只是在我的Mac上做了一些实验。结果:-s并不意味着-w,带/不带-s的二进制大小是相同的-w将二进制文件从12减少到8MB。另外:“go构建”和“-s-w”构建之间的堆栈跟踪没有区别。当然,这只是为了我的软件,可能有角落的情况。