golang 编译

353 阅读1分钟

编译标签

 // (linux AND 386) OR (darwin AND (NOT cgo))
 // +build linux,386 darwin,!cgo
 
package service

func New() {

}
# 标签
. 操作系统,环境变量中GOOS的值,如:linux、darwin、windows等等。
. 操作系统的架构,环境变量中GOARCH的值,如:arch64、x86、i386等等。
. golang版本号:比如Go Version 1.15为go1.15,Go Version 1.16版本为go1.16,以此类推。
. 其它自定义标签,通过go build -tags指定的值

# 规则
. 编译标签由空格分隔的编译选项(options)以”或”的逻辑关系组成
. 每个编译选项由逗号分隔的条件项以逻辑”与”的关系组成
. 每个条件项的名字用字母+数字表示,在前面加!表示否定的意思

# 文件后缀
. filename_$GOOS.go
. filename_$GOARCH.go
. filename_$GOOS_$GOARCH.go

编译选项

# go build -gcflags="-m -l" main.go
. -m 打印优化决定
. -l 禁止内联