部署
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
这种架构一般用于嵌入式开发。比如 Android
, iOS
, Win mobile
等
为了方便呢,可以在项目的根目录下写一个 bat 文件
这样就能快速构建了
然后放到 linux 服务器下,设置文件权限就可以直接运行了
go
chmod +x main
./main
WARNING
再次注意啊,以后打包 web 项目的时候,配置文件和静态文件等这些非 go 程序,是要一起复制到目标服务器里面的