Golang 在 Mac、Linux、Windows 下如何交叉编译
- Mac 下编译 Linux 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
- Linux 下编译 Mac 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
- Windows 下编译 Mac 和 Linux 64位可执行程序
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)
GOARCH:目标平台的体系架构(386、amd64、arm)
交叉编译不支持 CGO 所以要禁用它
go 1.13:go build -v -mod=vendor就会取vendor下的目录
go 1.14:之后go build -v 之后如果目录下有vendor目录会取vendor目录中的库
- 设置GOPRIVATE
再来说centos系统:与windows设不设GOPRIVATE都一样的情况略有差异,linux上必需要先设置环境变量GOPRIVATE="我的gitlab地址",告诉go这是一个私有仓库,不要用代理去拉,而是直接拉。
go 工具
go vet` 检测代码可能的错误,使用 `go vet ./test.go
go 1.13 拉取指定版本:
go get github.com/cucumber/godog@v.8.0
如果遇到 SECURITY ERROR This download does NOT match the one reported by the checksum server. The bits may have been replaced on the origin server, or an attacker may have intercepted the download attempt.
需要
go clean -modcache
export GOSUMDB=off && go get github.com/cucumber/godog@v0.8.0 //GOSUMDB会去掉安全校验
有疑问加站长微信联系(非本文作者)