在 Ubuntu 上为不同平台编译 Go 语言程序,可以使用 Go 的交叉编译功能。交叉编译意味着在一个平台上生成另一个平台的可执行文件。Go 语言支持交叉编译,因此你可以在 Ubuntu 上为 Windows、macOS 或 Linux 的其他架构编译程序。
以下是使用 Go 在 Ubuntu 上进行交叉编译的基本步骤:
安装 Go:如果你还没有安装 Go,请先从官方网站下载并安装适合你的系统的 Go 版本。
设置环境变量(可选):虽然不是必须的,但设置 GOOS
和 GOARCH
环境变量可以帮助你明确指定目标操作系统和架构。
编写 Go 程序:创建一个简单的 Go 程序作为示例。
交叉编译:使用 GOOS
和 GOARCH
环境变量来指定目标平台,并运行 go build
命令。
下面是一个具体的例子,展示如何在 Ubuntu 上为一个名为 hello.go
的 Go 程序编译出 Windows 可执行文件:
# 编写一个简单的 Go 程序
cat <<EOF > hello.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
EOF
# 交叉编译为 Windows 可执行文件
GOOS=windows GOARCH=amd64 go build -o hello.exe hello.go
# 如果你需要编译为 32 位 Windows 可执行文件,可以使用:
# GOOS=windows GOARCH=386 go build -o hello.exe hello.go
在这个例子中,GOOS=windows
指定了目标操作系统是 Windows,GOARCH=amd64
指定了目标架构是 64 位。如果你需要编译为 32 位 Windows 可执行文件,可以将 GOARCH
设置为 386
。
编译完成后,你会在当前目录下得到一个名为 hello.exe
的可执行文件,这个文件可以在 Windows 系统上运行。
对于其他目标平台,你需要将 GOOS
和 GOARCH
设置为相应的值。例如:
GOOS=darwin GOARCH=amd64
GOOS=linux GOARCH=arm
完整的列表可以在 Go 的官方文档中找到:https://golang.org/doc/install/source#environment
请注意,交叉编译时可能会遇到依赖问题,特别是当程序依赖于 C 语言库时。在这种情况下,你可能需要安装相应的交叉编译工具链或者使用 CGO 相关的环境变量来指定交叉编译器。