美文网首页
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 交叉编译(跨平台编译)各平台下的二进制文件

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