Go编译器提供了一些编译优化参数,这些参数可以在编译时使用,以改进生成的二进制文件的性能或大小。以下是一些常用的编译优化参数:
  1. gcflags:这个参数允许你传递一些选项给Go的编译器。例如,你可以使用gcflags "-N -l"来禁止编译器进行优化和内联,这在进行调试时非常有用。
  1. ldflags:这个参数允许你传递一些选项给链接器。例如,你可以使用ldflags "-s -w"来减小生成的二进制文件的大小。s选项去掉了符号表,w选项去掉了DWARF调试信息。
  1. race:这个参数启用了数据竞争检测,它可以帮助你发现并发代码中的数据竞争问题。
  1. msan:这个参数启用了内存访问错误检测,它可以帮助你发现代码中的内存访问错误。
  1. bench:这个参数用于运行基准测试,它可以帮助你衡量代码的性能。
  1. trimpath:这个参数可以去掉生成的二进制文件中的所有文件路径信息,这在构建可复现的二进制文件时非常有用。
  1. buildmode:这个参数控制了生成的二进制文件的类型,例如,你可以使用buildmode=c-shared来生成一个C语言的共享库。
这些都是Go编译器提供的编译优化参数,你可以根据你的具体需求来选择合适的参数。
 
除了上述的编译优化参数,Go编译器还提供了一些其他的参数,例如:
  1. p:这个参数用于设置并行编译的数量,例如p 4表示使用4个CPU核心进行并行编译。
  1. v:这个参数用于打印编译过程中的详细信息,例如哪些包被编译,哪些包被跳过等。
  1. x:这个参数用于打印编译过程中的所有命令,这对于理解和调试编译过程非常有用。
  1. work:这个参数用于打印编译过程中使用的临时工作目录的路径,并保留这个目录供你在编译完成后进行检查。
  1. asmflags:这个参数允许你传递一些选项给Go的汇编器。
  1. tags:这个参数用于设置构建标签,你可以使用这个参数来控制哪些文件应该被编译。
  1. mod:这个参数用于控制模块的下载行为,例如mod=readonly表示只使用本地的模块缓存,不下载任何新的模块。
  1. i:这个参数在编译包和依赖时安装结果,这样可以加速后续的构建。
这些参数可以根据你的实际需求进行选择和使用,帮助你更好地控制Go的编译过程。
 
以上已经列出了大部分常用的Go编译参数,但Go的工具链实际上还有更多的命令和选项。以下是一些不太常用,但在特定情况下可能有用的参数:
  1. cover:这个参数用于开启测试覆盖率分析。
  1. race:这个参数用于开启数据竞争检测。
  1. vet:这个参数用于控制在编译时运行哪些vet检查。
  1. o:这个参数用于指定输出文件的名字。
  1. toolexec:这个参数用于指定一个程序,这个程序会被用来执行go工具链中的每个二进制文件。
这些参数的使用取决于你的具体需求和使用场景。如果你想了解更多关于Go编译器的参数,可以查阅Go的官方文档或使用go help命令。
 

GO 参数
Go执行参数主要用于控制Go程序的运行行为。以下是一些常见的Go执行参数:
  1. a:强制重新构建所有包,即使它们已经是最新的。
  1. n:打印但不实际执行命令。
  1. v:显示执行的命令。
  1. x:打印构建命令,包括环境变量。
  1. race:启用数据竞争检测。
  1. msan:启用内存消毒器。
  1. work:打印临时工作目录的名称,并在退出时不删除它。
  1. asmflags '[pattern=]arg list':为匹配的包应用参数列表到汇编器。
  1. buildmode:设置生成的构建模式。
  1. compiler name:使用指定的编译器。
  1. gccgoflags '[pattern=]arg list':为匹配的包应用参数列表到gccgo编译器/链接器。
  1. gcflags '[pattern=]arg list':为匹配的包应用参数列表到编译器。
  1. installsuffix suffix:为了避免文件名冲突,将后缀添加到包和二进制文件的安装目录。
  1. ldflags '[pattern=]arg list':为匹配的包应用参数列表到链接器。
  1. linkshared:链接到共享库。
  1. mod mode:设置模块下载模式。
  1. modcacherw:让模块缓存目录对构建工具可读写。
  1. modfile file:在编译时替换go.mod,而不改变原文件。
  1. tags tag,list:定义构建标签。
  1. trimpath:去除所有文件路径信息。
这些参数可以根据你的实际需求进行选择和使用,帮助你更好地控制Go程序的运行行为。
 
除了上述参数,Go执行参数还包括以下一些:
  1. pkgdir dir:安装和加载所有包的目录。
  1. toolexec 'cmd args':在运行每一个go工具链的二进制文件之前,先运行该命令。
  1. overlay file:使用一个overlay文件来修改包的文件树,这对于在不修改源代码的情况下进行测试和构建非常有用。
  1. bench regexp:运行匹配正则表达式的基准测试。
  1. run regexp:运行匹配正则表达式的测试。
  1. exec xprog:运行测试和基准测试时使用xprog,而不是默认的测试二进制文件。
  1. json:输出测试结果为JSON。
  1. cover:启用覆盖率分析。
  1. coverpkg=pkg1,pkg2,pkg3:应用覆盖率分析到指定的包。
  1. outputdir directory:将测试对象和测试日志写入指定目录。
  1. vet=list:在运行测试之前,使用指定的vet检查。
这些参数可以根据你的实际需求进行选择和使用,帮助你更好地控制Go程序的运行行为。