Skip to content

部署

WARNING

注意,这个操作是不同平台不一样的

windows 下打包就是 exe 文件,linux 下打包就是二进制文件

打包命令

go
go build

打当前目录下的 main 包,注意,只能有一个 main 函数的包

go
go build xxx.go

打当前目录下,xxx.go 的包,这个包必须得是一个 main 包,不然没有效果

go
go build -o main.exe xxx.go

强制对输出的文件进行重命名

-o 参数必须得在文件的前面

交叉编译

什么是交叉编译呢,就是在 windows 上,我开发的 go 程序,我也能打包为 linux 上的可执行程序

例如在 windows 平台,打 linux 的包

WARNING

注意,执行 set 这个命令,一定得要是在 cmd 的命令行下,powershell 是无效的

go
set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build -o main main.go

CGO_ENABLED : CGO 表示 golang 中的工具,CGO_ENABLED=0 表示 CGO 禁用,交叉编译中不能使用 CGO GOOS : 环境变量用于指定目标操作系统,mac 对应 darwin,linux 对应 linux,windows 对应 windows ,还有其它的 freebsd、android 等

GOARCH:环境变量用于指定处理器的类型,386 也称 x86 对应 32 位操作系统、amd64 也称 x64 对应 64 位操作系统,arm 这种架构一般用于嵌入式开发。比如 AndroidiOSWin mobile

为了方便呢,可以在项目的根目录下写一个 bat 文件

这样就能快速构建了

然后放到 linux 服务器下,设置文件权限就可以直接运行了

go
chmod +x main
./main

WARNING

再次注意啊,以后打包 web 项目的时候,配置文件和静态文件等这些非 go 程序,是要一起复制到目标服务器里面的