摘要:本文介绍了Golang跨平台编译的一些常用选项参数,并给除了几个常用的跨平台编译的例子。
常用的跨平台编译指令
- 在Linux平台上编译:
– Windows平台上可运行:CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build *
– MACOS 可运行 :CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build * - 在Windows平台上编译:
– MacOS 上可运行: SET CGO_ENABLED=0SET GOOS=darwin3 SET GOARCH=amd64 go build *
– Linux 上可运行 : SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build * - 在MacOS上编译:
– Linux 上可运行: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build *
– Windows 上可运行: CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build *
涉及参数解释
- CGO_ENABLE:是否启动CGO编译器进行编译。因为我们不确定指定平台是否存在C的动态连接库(libc),建议不启动CGO编译器(CGO_ENABLE=0)。
- GOOS:表示指定需要执行该指令的操作系统类型。具体选项有: android, darwin, dragonfly, freebsd, illumos, ios, js, linux, netbsd, openbsd, plan9, solaris, wasip1, and windows。
- GOARCH:表示芯片架构类型。具体选项有:amd64 (64-bit x86, the most mature port), 386 (32-bit x86), arm (32-bit ARM), arm64 (64-bit ARM), ppc64le (PowerPC 64-bit, little-endian), ppc64 (PowerPC 64-bit, big-endian), mips64le (MIPS 64-bit, little-endian), mips64 (MIPS 64-bit, big-endian), mipsle (MIPS 32-bit, little-endian), mips (MIPS 32-bit, big-endian), s390x (IBM System z 64-bit, big-endian), and wasm (WebAssembly 32-bit)。
有效的GOOS和GOARCH组合有:
GOOS | GOOS |
---|---|
aix | ppc64 |
android | 386 |
android | amd64 |
android | arm |
android | arm64 |
darwin | amd64 |
darwin | arm64 |
dragonfly | amd64 |
freebsd | 386 |
freebsd | amd64 |
freebsd | arm |
illumos | amd64 |
ios | arm64 |
js | wasm |
linux | 386 |
linux | amd64 |
linux | arm |
linux | arm64 |
linux | loong64 |
linux | mips |
linux | mipsle |
linux | mips64 |
linux | mips64le |
linux | ppc64 |
linux | ppc64le |
linux | riscv64 |
linux | s390x |
netbsd | 386 |
netbsd | amd64 |
netbsd | arm |
openbsd | 386 |
openbsd | amd64 |
openbsd | arm |
openbsd | arm64 |
plan9 | 386 |
plan9 | amd64 |
plan9 | arm |
solaris | amd64 |
wasip1 | wasm |
windows | 386 |
windows | amd64 |
windows | arm |
windows | arm64 |