golang的一大特性就是跨平台编译。
有时候我们会遇到在windows里写代码,然后把程序拿到linux里运行的情况。跨平台编译的便利性会使你喜欢上golang这个语言。
所谓跨平台编译,就是在一个操作系统下生成另一个操作系统下可执行的文件。
你只需要在编写代码的操作系统下设置一些参数即可达到这个目的。
# Windows下编译linux的64位可执行文件
> SET CGO_ENABLED=0
> SET GOOS=linux
> SET GOARCH=amd64
> go build hello.go
以helloworld作为示例:
package main
import "fmt"
func main() {
fmt.Println("hello world.")
}
go代码编写完成后,执行go build hello.go
,会在目录下生成hello.exe,执行上述命令后,会生成linux下的可执行文件。
记录不同平台下交叉编译的命令
# Windows下编译Mac平台64位可执行程序:
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build xxx.go
# Linux下编译 Mac 和 Windows 平台64位可执行程序:
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build xxx.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build xxx.go
# Mac 下编译 Linux 和 Windows 平台 64位 可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build xxx.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build xxx.go