Golang如何在Linux系统与其他操作系统间生成exe文件

Golang如何在Linux系统与其他操作系统间生成exe文件 你好,我使用的是Linux系统。在编写完Go脚本后,你输入

go build filename.go

然后就会生成可执行文件…

现在这个可执行文件只能在Linux上运行,所以我想让这个可执行文件也能在Windows上运行,我该怎么做?或者,如何在Linux上生成.exe文件?反之亦然,如果我使用的是Windows,如何生成Linux的可执行文件?

感谢你的支持。

5 回复

只需在Windows上安装Go,复制源代码并在Windows上编译即可。我已经这样做过不止一次了。

更多关于Golang如何在Linux系统与其他操作系统间生成exe文件的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


只要您使用纯Go代码,不涉及任何FFI或系统调用,仅通过设置GOOSGOARCH环境变量通常就足够了。

关于可能的组合列表,请参考 https://gist.github.com/asukakenji/f15ba7e588ac42795f421b48b8aede63。请注意,此列表可能既不完整,也可能不是最新的。

正如Jeff先生所写,你可以在Linux上轻松完成,无需这样做。 GOOS=windows GOARCH=amd64 go build filename.go

不需要这样做,正如Jeff先生所写,你可以在Linux上轻松完成:

GOOS=windows GOARCH=amd64 go build filename.go

这比你想的要简单:

GOOS=windows GOARCH=amd64 go build filename.go

查看我关于 Go 的演示文稿:

NWOUG-Portland-2019-Go-Presentation.pdf

第 27 页。

祝你好运!

在Go中,你可以使用交叉编译来生成不同操作系统的可执行文件。这通过设置GOOSGOARCH环境变量来实现。以下是在Linux上生成Windows可执行文件(.exe)的方法:

// 在Linux终端中执行:
GOOS=windows GOARCH=amd64 go build -o myapp.exe main.go

这会生成一个64位Windows可执行文件。如果你需要32位版本:

GOOS=windows GOARCH=386 go build -o myapp.exe main.go

反之,在Windows上生成Linux可执行文件:

// 在Windows命令提示符或PowerShell中:
set GOOS=linux
set GOARCH=amd64
go build -o myapp main.go

或者在PowerShell中:

$env:GOOS="linux"
$env:GOARCH="amd64"
go build -o myapp main.go

你也可以使用更简洁的一行命令:

// Linux生成Windows:
GOOS=windows GOARCH=amd64 go build -o app.exe

// Windows生成Linux:
GOOS=linux GOARCH=amd64 go build -o app

支持的GOOSGOARCH组合可以通过go tool dist list查看。例如,生成macOS可执行文件:

GOOS=darwin GOARCH=amd64 go build -o myapp

如果你需要为多个平台构建,可以创建构建脚本:

// build.sh (Linux/Mac)
#!/bin/bash
GOOS=windows GOARCH=amd64 go build -o build/myapp-windows.exe
GOOS=linux GOARCH=amd64 go build -o build/myapp-linux
GOOS=darwin GOARCH=amd64 go build -o build/myapp-macos

注意:交叉编译时,如果程序使用了CGO,可能需要禁用CGO:

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o app.exe
回到顶部