go语言build平台支持编译打包脚本
GO_ENABLED=0 GOOS=windows GOARCH=386 go build -ldflags "-s -w" -o xxxxx-windows-386-1.0.exe main.go GO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o xxxxx-windows-amd64-1.0.exe main.go GO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o xxxxx-linux-amd64-1.0 main.go GO_ENABLED=0 GOOS=linux GOARCH=386 go build -o xxxxx-linux-386-1.0 main.go GOARM=5 GOARCH=arm GOOS=linux go build -ldflags "-w -s" -o xxxxx-linux-armv5-1.0 main.go GOARM=6 GOARCH=arm GOOS=linux go build -ldflags "-w -s" -o xxxxx-linux-armv6-1.0 main.go GOARM=7 GOARCH=arm GOOS=linux go build -ldflags "-w -s" -o xxxxx-linux-armv7-1.0 main.go GOARM=8 GOARCH=arm GOOS=linux go build -ldflags "-w -s" -o xxxxx-linux-armv8-1.0 main.go xxxxx-darwin-amd64-2.10.1.gz xxxxx-freebsd-386-2.10.1.gz xxxxx-freebsd-amd64-2.10.1.gz xxxxx-linux-386-2.10.1.gz xxxxx-linux-amd64-2.10.1.gz xxxxx-linux-armv5-2.10.1.gz xxxxx-linux-armv6-2.10.1.gz xxxxx-linux-armv7-2.10.1.gz xxxxx-linux-armv8-2.10.1.gz xxxxx-linux-mips-hardfloat-2.10.1.gz xxxxx-linux-mips-softfloat-2.10.1.gz xxxxx-linux-mips64-2.10.1.gz xxxxx-linux-mips64le-2.10.1.gz xxxxx-linux-mipsle-hardfloat-2.10.1.gz xxxxx-linux-mipsle-softfloat-2.10.1.gz xxxxx-windows-386-2.10.1.zip xxxxx-windows-amd64-2.10.1.zip
Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。
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=0SET GOOS=darwin3 SET GOARCH=amd64 go build test.go
$ SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build test.go
注:如果编译web等工程项目,直接cd到工程目录下直接执行以上命令
GOOS:目标可执行程序运行操作系统,支持 darwin,freebsd,linux,windows
GOARCH:目标可执行程序操作系统构架,包括 386,amd64,arm
GOOS:目标平台的操作系统(darwin、freebsd、linux、windows) GOARCH:目标平台的体系架构(386、amd64、arm) 交叉编译不支持 CGO 所以要禁用它 https://github.com/golang/go/blob/master/src/go/build/syslist.go#L8:31 package build const goosList = "android darwin dragonfly freebsd js linux nacl netbsd openbsd plan9 solaris windows zos " const goarchList = "386 amd64 amd64p32 arm armbe arm64 arm64be ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le
1.mac的环境下 $ go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $ go env -w CGO_ENABLED=0 GOOS=windows GOARCH=amd64 2.linux环境下: $ go env -w CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 $ go env -w CGO_ENABLED=0 GOOS=windows GOARCH=amd64 3.windows 环境下 $ go env -w CGO_ENABLED=0 GOOS=darwin3 GOARCH=amd64 $ go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64 将环境变量修改完成之后,在进行 go build 切换回来: go env -w CGO_ENABLED=1 GOOS=darwin GOARCH=amd64
请登录之后再进行评论