go build
go build [-o output] [build flags] [packages]
build, clearn, get, install, list, run, test 共享的参数
-a
强制重新构建已经是最新的包-n
打印命令但不运行-p n
并发程度, 默认是GOMAXPROCS的值-race
启用数据竞争检测-msan
启用内存错误检测(用的是google sanitizer)asan
启用地址错误检测-v
打印出要编译的所有包-work
打印出编译时的临时目录并且编译完成后不删除-x
打印出编译命令-asmflags '[pattern=]arg list'
传递给 go tool asm调用的参数-buildmode mode
见buildmodebuildvsc
是用版本控制信息标记二进制文件 [true | false | auto]-complier name
指定编译器[gccgo | gc]gccgoflags '[pattern=]arg list'
gccgo编译器参数gcflags '[pattern=]arg list'
go tool compile编译参数-installsuffix suffix
安装后缀-ldflags '[pattern=]arg list'
go tool link参数-linkshared
链接共享库-mod mode
下载mod模式 readonly, vendor, mod-modcacherw
-modfile file
-overlay file
-pkgdir dir
-tags tag,list
-trimpath
toolexec 'cmd args'
go clean
go clean [clean flags] [build flags] [packages]
go env
go env [-json] [-u] [-w] [var ...]
go fix
go fix [-fix list] [packages]
Update packages to use new APIs
go fmt
go fmt [-n] [-x] [packages]
go generate
go generate [-run regexp] [-n] [-v] [-x] [build flags] [file.go... | packages]
go get
go get [-t] [-u] [-v] [build flags] [packages]
buildmode
go help buildmode
当使用go build
和go install
时传递-buildmode参数指出将要构建那种类型的obj文件.
- -buildmode=archive 构建列出的没有main包的文件到.a文件中
- -buildmode=c-archive 构建所有列出的main包加上所有导入的包到一个C archive文件中, 只有使用cgo注释的函数才能调用
//export
- -buildmode=c-shared 构建所有包到一个C shared库中, 也必须使用
//export
注释 - -buildmode=default 列出的main包将会被构建入可执行文件中, 列出的非main包将构建入.a文件中
- -buildmode=shared 构建所有non-main包到单个 shared library中, 构建时使用-linkshared选项
- -buildmode=exe 构建所有列出的main包和所有导入的包到可执行文件中, 包名不是main的都将忽略
- -buildmode=pie 构建到pie中(position independent executables)
- -buildmode=plugin 构建go plugin