半醉残影 - Golang
type: channel
link: https://mars.dengyb.com/category/google/
description: golang
items: golang交叉编译，如何编译可移植跨平台golang应用

golang交叉编译，如何编译可移植跨平台golang应用
type: item
date: 2021-06-03T10:45:00+08:00
description: golang交叉编译Golang 支持交叉编译，在一个平台上生成另一个平台的可执行程序,只需要按照我下面的这个环境变量表设置对应的环境变量就可以了环境变量对照表golang交叉编译环境变量对照表GOOSGOARCHOS VERSIONlinux386 / amd64 / arm>= Linux 2.6darwin386 / amd64OX X (Snow Leopard + Lion)freebsd386 / amd64>= FreeBSD 7windows386 / amd64>= Windows 2000使用WindowsWindows 下编译 Mac 64位可执行程序set CGO_ENABLED=0 set GOOS=darwin set GOARCH=amd64 go build main.goWindows 下编译 Linux 64位可执行程序set CGO_ENABLED=0 set GOOS=linux set GOARCH=amd64 go build main.golinuxLinux 下编译 Mac 64位可执行程序export CGO_ENABLED=0 export GOOS=darwin export GOARCH=amd64 go build main.goLinux 下编译 Windows 64位可执行程序export CGO_ENABLED=0 export GOOS=windows export GOARCH=amd64 go build main.goMac OSMac 下编译 Windows 64位可执行程序export CGO_ENABLED=0 export GOOS=windows export GOARCH=amd64 go build main.goMac 下编译 Linux 64位可执行程序export CGO_ENABLED=0 export GOOS=linux export GOARCH=amd64 go build main.go备注CGO_ENABLED解释默认情况下，Go的runtime环境变量CGO_ENABLED=1，即默认开始cgo，允许你在Go代码中调用C代码如果标准库中是在CGO_ENABLED=1情况下编译的，那么编译出来的最终二进制文件可能是动态链接，所以建议设置 CGO_ENABLED=0以避免移植过程中出现的不必要问题。