环境说明

  • 开发环境:mac
  • go 1.16.2
  • 生产环境:Ubuntu 20.04.1 LTS

步骤说明

go build

$ go build [-o output] [-i] [build flags] [packages]
  • -o 参数可以指定输出目录与打包后的文件名,例:$ go build -o gorse main.go

进入main.go文件目录进行

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

等待一会,可以看到目录中生成了main二进制文件

# axin @ AxindeMacBook-Pro in ~/workspace/goProject/gorse/cmd/gorse-master on git:release-0.2 x [11:54:38] 
$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

Windows平台打包命令

set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build

注:

  • CGO_ENABLED 表示不使用cgo
  • GOOS 表示目标平台系统(Windows,linux,darwin「mac os」等等)
  • GOARCH 表示目标系统架构(arm arm64 386 amd64 等等)

注意事项

如果一个目录有多个go文件,打包命令使用

go build .

go build main.go 它只编译main.go

执行程序
go run main.go

一个文件夹下有多个go程序,每个都含有main函数

go run 指定的go程序名

go build 文件名

执行程序

  1. 上传二进制文件到服务器

  2. 赋予可执行权限:chmod +x ./mainchmod 773 ./main

  3. 运行 ./mainnohup ./main >runing.log 2>&1 &

2>&1 解释:

将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runing.log 文件中。

0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)

& 解释:

后台运行