前言
Go语言入门菜鸡,一直在用Goland写代码,因为vim配置Go的开发环境简直不要太难,放弃了。一直很困惑,我如何在Windows下编写代码,然后再拿去Linux下去部署运行?原来一直以为需要把代码弄过去,然后编译,运行,不懂得交叉编译这回事,今天搞了一下,做个记录。
编译
当我们在Windows上用IDE把程序写好之后,想要打包部署到Linux上运行。使用cmd切换到当前项目目录下(main.go目录下),或者使用Goland的Terminal,然后执行以下命令:
$ set GOARCH=amd64
$ set GOOS=linux
GOOS指的是目标操作系统,支持以下操作系统
darwin freebsd linux windows android dragonfly netbsd openbsd plan9 solaris
GOARCH指的是目标处理器的架构,支持一下处理器架构
arm arm64 386 amd64 ppc64 ppc64le mips64 mips64le s390x
设置好了目标操作系统与目标处理器的架构后,我们对main.go文件执行go build 命令了,就可以得到我们想要的目标文件了。
go build -o “packageName” main.go
-o :后面跟指定的生成的可执行程序的名字,当然也可以不使用-o 直接运行
go build main.go
在当前目录下会生成可执行mian的可执行二进制文件。
发布
把文件上传到Linux上的相关目录,改变文件的属性:
chmod -R 777 main
然后就可以直接运行了。
各个平台的打包方式
1、Mac下编译Linux, Windows平台的64位可执行程序:
$ CGO_ENABLED=0
GOOS=linux
GOARCH=amd64
go build test.go
$ CGO_ENABLED=0
GOOS=windows
GOARCH=amd64
go build test.go
2、Linux下编译Mac, Windows平台的64位可执行程序:
$ CGO_ENABLED=0
GOOS=darwin
GOARCH=amd64
go build test.go
$ CGO_ENABLED=0
GOOS=windows
GOARCH=amd64
go build test.go
3、Windows下编译Mac, Linux平台的64位可执行程序:
$ SET CGO_ENABLED=0
SET GOOS=darwin3
SET GOARCH=amd64
go build test.go
$ SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build test.go