Warning: file_exists(): open_basedir restriction in effect. File(/wp-cache-blog.topstalk.com12d3c0be47c1874c65762a5c086332f9.php) is not within the allowed path(s): (/www/wwwroot/Topstalk.com/:/tmp/:/RAMDisk/) in /www/wwwroot/Topstalk.com/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 100
 Golang交叉编译:在Windows环境生成Linux/Mac可执行程序 – 沫延说
沫延说
沫延说

Warning: Trying to access array offset on value of type bool in /www/wwwroot/Topstalk.com/wp-content/themes/MDx/single.php on line 71
Golang交叉编译:在Windows环境生成Linux/Mac可执行程序
Golang交叉编译:在Windows环境生成Linux/Mac可执行程序

前言

Go语言支持交叉编译,即在一个平台上,可以生成另一个平台的可执行程序

参数

RunTime:go1.15.6

参数1:GOOS

作用:目标平台的操作系统

可选项:aix、android、darwin、dragonfly、freebsd、illumos、js、linux、netbsd、openbsd、plan9、solaris、windows

ps:其中darwin代表Mac OS,其他不再展开。

参数2:GOARCH

作用:目标平台的处理器架构

可选项:ppc64、ppc64le、386、amd64、arm、arm64、wasm、mips、mips64、mipsle、mips64le、riscv64、s390x

ps:其中386代表32位,因为80386处理器使用x86架构(指令集)首次将PC机从16位时代带入了32位时代,该架构处理器简称386便代表32位处理器沿用至今

amd64代表64位,因为AMD公司使用x86架构(指令集)首次将PC机带入64位时代,因是Intel公司x86指令集的延伸所以也叫x86-64,非官方写法很常见:x86_64,后更名AMD64,为了不偏向英特尔或AMD其他厂商一般称其前者,后为了图方便x64的读法便流行开来

其他不再展开

 

当然了,如果你想知道有多少种支持的组合方式,你可以使用命令go tool dist list查看

应用示例

以最高兼容性考虑,默认变量CGO_ENABLED已配置为0,不再单独配置

CGO_ENABLED配置为0将编译为纯静态程序,不依赖任何外部动态链接库

CGO_ENABLED默认为1,即调用动态链接库,有可能会使交叉编译出来的可执行程序无法在对应系统中运行

Windows环境

正常编译可执行程序

go build main.go

编译Linux平台可执行程序

SET GOOS=linux
SET GOARCH=amd64
go build main.go

Linux环境

正常编译可执行程序

go build main.go

编译Windows平台可执行程序

GOOS=windows GOARCH=amd64 go build main.go

 

 

感谢您阅读Golang交叉编译:在Windows环境生成Linux/Mac可执行程序

及时获取更多文章,欢迎关注“Topstalk”微信订阅号

Thank you for reading the Golang交叉编译:在Windows环境生成Linux/Mac可执行程序

Get more articles in time,Welcome to follow the "Topstalk" WeChat subscription account

没有标签
首页      生产环境      GoLang      Golang交叉编译:在Windows环境生成Linux/Mac可执行程序

Morton.L

文章作者

发表评论

textsms
account_circle
email

Warning: Trying to access array offset on value of type bool in /www/wwwroot/Topstalk.com/wp-content/themes/MDx/single.php on line 200
style="background-image:linear-gradient(to bottom, rgba(0,0,0,0) 45%,rgba(0,0,0,0.7) 100%),url(https://blog.topstalk.com/wp-content/themes/MDx/img/dpic.jpg");>

沫延说

Golang交叉编译:在Windows环境生成Linux/Mac可执行程序
前言 Go语言支持交叉编译,即在一个平台上,可以生成另一个平台的可执行程序 参数 RunTime:go1.15.6 参数1:GOOS 作用:目标平台的操作系统 可选项:aix、android、darwin、drag…
扫描二维码继续阅读
2021-01-14