Golang 交叉编译与应用部署

2020-09-07 · xiejiahe

交叉编译

在mac平台上编译只能在mac平台运行, 如果想在mac上编译windows上运行就需要交叉编译

编译

通常编译只需要运行 go build main.go 即可,如果需要交叉编译就用到 GOOS /GOARCH 2个环境变量。

Go 1.5+ 版本就已经内置支持了,所以不需要考虑版本问题。

下面编译成 windows 可执行文件 main.exe

GOOS=windows GOARCH=amd64 go build main.go

GOOS 是目标平台, GOARCH 则是目标平台的体系架构(通常是 amd64)。

GOOS和GOARCH参考列表

GOOS GOARCH
darwin 386
darwin amd64
darwin arm
darwin arm64
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
linux arm64
linux ppc64
linux ppc64le
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
openbsd arm
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64

除了上面通过命令行实现以外,还可以通过修改内置环境变量,但不建议,可以敲 go env 即可找到相关信息。

部署

golang 没有提供类似保守进程的工具,只能借助第三方,如 nohup / Supervisord / upstart / daemontools 等工具来实现。

最简单的方式就是使用 nohup 了, 唯一不好的就是很难监控应用状态。

nohup ./main &

这里推荐使用 node.js pm2

# 这样就启动起来了
pm2 start ./main

Go 亮点之一就是编译快,通常5秒就能编译一个程序出来,糟糕情况下也就1分钟左右。

Golang
原创文章,转载请注明出处。