与Java相比,Golang有一个明显的优势是它可以直接编译出可执行文件,然后扔到任意机器上运行,而Java编译出的jar则需要在目标机器上先安装JDK或JRE才能运行。
在macOS中编译Linux和Windows上的可执行文件:
# linux
GOOS=linux GOARCH=amd64 go build [-o output] filename.go
# Windows
GOOS=windows GOARCH=amd64 go build [-o output.exe] filename.go
在Linux中编译macOS和Windows上的可执行文件:
# macOS
GOOS=darwin GOARCH=amd64 go build [-o output] filename.go
# Windows
GOOS=windows GOARCH=amd64 go build [-o output.exe] filename.go
在Windows中编译macOS和Linux上的可执行文件:
# macOS
SET GOOS=darwin
SET GOARCH=amd64
go build [-o output] filename.go
# Linux
SET GOOS=linux
SET GOARCH=amd64
go build [-o output] filename.go
其实就是需要在编译前先设置环境变量GOOS和GOARCH
GOOS的可选值有:linux, darwin, windows, netbsd等
GOARCH的可选值有:arm, amd64, 386, ppc64等