您的位置:首页 > 汽车 > 时评 > Go语言交叉编译

Go语言交叉编译

2024/11/20 8:32:24 来源:https://blog.csdn.net/weixin_37909391/article/details/139453559  浏览:    关键词:Go语言交叉编译

Golang 支持交叉编译, 在一个平台上生成然后再另外一个平台去执行。
以下面代码为例
build
├── main.go
├── go.mod
在这里插入图片描述
main.go内容

package mainimport "fmt"func main() {fmt.Println("hello world")
}

windows系统上操作

1.cmd窗口编译

// 设置Linux编译环境
set CGO_ENABLED=0
set GOARCH=amd64
set GOOS=linux
go build main.go

修改的环境只在当前窗口生效,不影响整体环境

2.powershell窗口编译

// 设置Linux编译环境
$env:CGO_ENABLED="0"
$env:GOOS="linux"
$env:GOARCH="amd64"
go build main.go

修改的环境只在当前窗口生效,不影响整体环境

在cmd窗口和powershell窗口修改后,可以通过go env查看对应的变量已经更改。

Go交叉编译常用环境变量

  • Go支持交叉编译通过以下几个环境变量来实现,一般交叉编译时,使用命令行临时更改以下环境变量的方式实现。
  • CGO_ENABLE:是否支持C语言版本的GO编译器,如Go代码中调用了C代码,则交叉编译时必须指定为1,且还必须要指定CC变量。
  • GOOS:目标操作系统,支持的选项为darwin\linux\windows。
  • GOARCH:目标操作系统的架构,支持的常用选项为amd64\386\arm\arm64. 常用的GOOS和GOARCH对照表如下
GOOSGOARCH说明
darwinamd64Mac 64位系统
darwinarm64Mac 64位系统(ARM)
linuxamd64Linux 64位系统
linux386Linux 32位系统
linuxarm64Linux 64位系统(ARM)
linuxarmLinux 32位系统(ARM)
windowsamd64Windows 64位系统
windows386Windows 32位系统
windowsarm64Windows 64位系统(ARM)
windowsarmWindows 32位系统(ARM)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com