美文网首页
Go 交叉编译

Go 交叉编译

作者: lipeiyan | 来源:发表于2021-10-19 21:33 被阅读0次

44.Go 交叉编译 - 简书 (jianshu.com)

Go编译器可以为许多操作系统创建本机可执行二进制文件:Windows,Mac OS X,Linux,Android,iOS和一些鲜为人知的工具,例如plan9,solaris,freebsd,openbsd,netbsd,dragonfly。

它还为同一操作系统支持多种架构(CPU),例如 它可以生成32位和64位Windows二进制文件或intel,arm,ppc,mips Linux二进制文件。

更好的是,该工具链支持交叉编译,即您可以在Windows等上创建Linux或Mac二进制文件。

交叉编译非常容易,但仅适用于纯Go代码。 当程序通过CGO链接C库时,它不起作用,

交叉编译

默认情况下,go build生成与运行编译器的系统匹配的二进制文件。 即 如果您在具有Intel 64位CPU的Linux OS上运行它,它将为Linux OS和64位Intel CPU生成可执行文件。

要使其针对其他操作系统进行编译,请设置GOOS环境变量。

要使其针对其他体系结构(CPU)进行编译,请设置GOARCH环境变量。

要查看它们的当前值是什么,请运行go env。

GOOS的有效值:android,darwin,dragonfly,freebsd,js,linux,netbsd,openbsd,plan9,solaris,windows。

值darwin代表Mac OS和iOS。 值js代表Web汇编的编译。

GOARCH的有效值:arm,arm64、386,amd64,ppc64,ppc64le,mpis,mpisle,mps64,mips64le,s390x,wasm。

值386表示32位Intel兼容CPU,而amd64是64位Intel兼容CPU。 价值wasm适用于Web Assembly。

并非GOOS和GOARCH的所有组合都有效。 要查看所有可能的组合,请运行go tool dist list。

从Linux或Mac进行交叉编译的示例:

这是如何编译例如 对于Linux或Mac上的32位Windows:GOOS = windows GOARCH = 386 go build

这会将GOOS和GOOARCH临时设置为所需的值,然后运行go build。

我们还可以使用导出GOOS = windows在shell会话的生存期内设置它们。

从Windows交叉编译的示例:

在Windows上,当使用PowerShell并交叉编译到Linux和64位ARM处理器时:
$Env:GOOS = "linux"
$Env:GOARCH = "arm64"
go build

当心$Env:GOOS ="linux"在PowerShell会话期间设置GOOS变量,即它将影响所有将来的go build调用。

在Mac 或Linux上,交叉编译到Windows和64位AMD处理器时:(待验证)
go env -w SET GOOS= windows
go env -w SET GOARCH = amd64
go build

Cross-compiling with gox

如果需要交叉编译为所有可能的体系结构,则可以使用 https://github.com/mitchellh/gox.

相关文章

  • 交叉编译

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

  • Linux环境Golang配置

    Linux配置方式1 Linux配置方式2 设置 goproxy 使用 go module 交叉编译 交叉编译依赖...

  • go交叉编译

  • go 交叉编译

    Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。 Ma...

  • go 交叉编译

    widnow 交叉编译linux可运行二进制 扔到服务器 --PS 这时ssh关了就gg了。我们把它写到服务器进程...

  • Go交叉编译

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

  • go交叉编译

    1. Windows下 编译为Linux可运行文件 编译为MAC可运行文件 编译为Window可运行文件 2. M...

  • Go 交叉编译

    转44.Go 交叉编译 - 简书 (jianshu.com)[https://www.jianshu.com/p/...

  • golang编译与go程序部署

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

  • go arm 交叉编译

    一、纯GO语言代码 1. 设置 GOARCH export GOARCH=arm 2. 编译go 代码 go bu...

网友评论

      本文标题:Go 交叉编译

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