交叉编译
在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分钟左右。