美文网首页
Go 交叉编译(跨平台编译)各平台下的二进制文件

Go 交叉编译(跨平台编译)各平台下的二进制文件

作者: 吾等斩去红尘时 | 来源:发表于2022-04-03 22:16 被阅读0次

什么是交叉编译

交叉编译是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。

交叉编译的方法

  • 在 Mac 下编译 Linux 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
  • 在 Linux 下编译 Mac 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
  • 在 Windows 下编译 Mac 和 Linux 64位可执行程序
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
  • 说明
    GOOS 平台的操作系统
    GOARCH 平台的体系架构
    由于交叉编译不支持 CGO 所以要禁用它

查看当前 GO 语言版本

go version

终端输出

go version go1.17.8 darwin/arm64

注意:查看平台支持的操作系统和体系架构查看当前平台的操作系统和体系结构都是在上面终端输出的版本号中进行的

查看平台支持的操作系统和体系架构

go tool dist list

终端输出

aix/ppc64
android/386
android/amd64
android/arm
android/arm64
darwin/amd64
darwin/arm64
dragonfly/amd64
freebsd/386
freebsd/amd64
freebsd/arm
freebsd/arm64
illumos/amd64
ios/amd64
ios/arm64
js/wasm
linux/386
linux/amd64
linux/arm
linux/arm64
linux/mips
linux/mips64
linux/mips64le
linux/mipsle
linux/ppc64
linux/ppc64le
linux/riscv64
linux/s390x
netbsd/386
netbsd/amd64
netbsd/arm
netbsd/arm64
openbsd/386
openbsd/amd64
openbsd/arm
openbsd/arm64
openbsd/mips64
plan9/386
plan9/amd64
plan9/arm
solaris/amd64
windows/386
windows/amd64
windows/arm
windows/arm64

查看当前平台的操作系统和体系结构

go env GOOS GOARCH

终端输出

darwin
arm64

相关文章

  • Go 交叉编译(跨平台编译)各平台下的二进制文件

    什么是交叉编译 交叉编译是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同...

  • java常见知识点

    java源程序先经过javac编译器编译成二进制的.class字节码文件(跨平台指的是.class字节码文件的跨平...

  • JNI与底层调用01

    交叉编译 在一个平台下,编译出另一个平台能够执行的二进制的代码 平台:windows,mac os,linux 处...

  • 交叉编译

    使用go的交叉编译 最后使用go build windows_fping.go 编译出.exe可执行文件 如果编译...

  • go build 不同平台交叉编译

    Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。 Mac下编译Linux, Windows平...

  • Go交叉编译

    mac上编译了一个go二进制文件,放到linux上没法执行,需要交叉编译,受高人指点 vim build.sh #...

  • linux, windows, mac, ios等平台GCC预编

    写跨平台c/c++程序的时候,需要搞清各平台下面的预编译宏,区分各平台代码。而跨平台c/c++编程,GCC基本在各...

  • golang编译与go程序部署

    Go程序编译 1. 交叉编译(Cross compiler) “ 交叉编译是在一个平台上生成另一个平台上的可执行代...

  • golang build 不同系统下的可执行文件

    go build 不同系统下的可执行文件 Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。

  • Go - go build 各种系统下的可执行文件

    go build各种不同系统下的可执行文件 Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。...

网友评论

      本文标题:Go 交叉编译(跨平台编译)各平台下的二进制文件

      本文链接:https://www.haomeiwen.com/subject/rxcqsrtx.html