Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在Go中构建发布版本二进制文件?_C_Go_Build_Release - Fatal编程技术网

C 如何在Go中构建发布版本二进制文件?

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”

在C中,我们可以构建二进制文件(目标文件和可执行文件)的调试版本或发布版本。我们怎样才能在围棋中做到这一点

您可以指示链接器使用

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”构建之间的堆栈跟踪没有区别。当然,这只是为了我的软件,可能有角落的情况。