交叉编译
程序交叉编译后就可以在各操作系统执行,非Java或Python依赖虚拟机,Go编译后不依赖虚拟机。
交叉编译大家要理解三个概念内核
、架构
和位
,
内核:
内核是操作系统的核心,windows不必多说,Linux家族主流内核freebsd、netbsd、solaris等。Mac内核darwin,Darwin 是一种Unix-like(类Unix)操作系统。
架构:
目前市面上的CPU架构为X86
和arm
,amd
和intel
属于X86
架构。
X86
架构性能好,耗电多、电压高,主要用于PC机、服务器。
ARM
架构耗电少、电压低,单核性能低于X86
,主要用于移动设备。
位:
X86
一般是指32位
的系统,X64
就是64位
的系统。X64
本质上也是X86
的一个版本,确切来说,应该叫x86_64
,可以简单理解成X86
的下一代版本。
代码
package main
import "fmt"
func main() {
fmt.Println("https://secself.com")
}
Go支持的平台
$GOOS | $GOARCH |
---|---|
darwin | 386 |
darwin | amd64 |
darwin | arm |
darwin | arm64 |
dragonfly | amd64 |
freebsd | 386 |
freebsd | amd64 |
freebsd | arm |
linux | 386 |
linux | amd64 |
linux | arm |
linux | arm64 |
linux | ppc64 |
linux | ppc64le |
netbsd | 386 |
netbsd | amd64 |
netbsd | arm |
openbsd | 386 |
openbsd | amd64 |
openbsd | arm |
plan9 | 386 |
plan9 | amd64 |
solaris | amd64 |
windows | 386 |
windows | amd64 |
windows | arm |
windows | arm64 |
Windows
编译windows平台可执行文件
$ GOOS=windows GOARCH=amd64 go build test.go
Linux
编译Linux平台可执行文件
$ GOOS=linux GOARCH=amd64 go build test.go
Mac
$ GOOS=darwin GOARCH=amd64 go build test.go