【Golang】Golang高级交叉编译指南:实现Windows与Linux平台无缝编译与部署
package main
import (
"fmt"
"os/exec"
"runtime"
)
// 定义不同操作系统的目标平台参数
var targetPlatforms = map[string][]string{
"windows": {"amd64"},
"linux": {"amd64", "arm64"},
}
func main() {
// 获取当前操作系统
currentOS := runtime.GOOS
// 获取当前架构
currentArch := runtime.GOARCH
// 设置输出目录
outputDir := "./dist"
// 遍历目标平台进行交叉编译
for os, archs := range targetPlatforms {
for _, arch := range archs {
// 设置环境变量以进行交叉编译
err := os.Setenv("GOOS", os)
if err != nil {
fmt.Println("Error setting GOOS:", err)
return
}
err = os.Setenv("GOARCH", arch)
if err != nil {
fmt.Println("Error setting GOARCH:", err)
return
}
// 构建命令
cmd := exec.Command("go", "build", "-o", fmt.Sprintf("%s/%s_%s_%s", outputDir, "myapp", os, arch), "./myapp")
// 执行编译命令
err = cmd.Run()
if err != nil {
fmt.Printf("Error building for %s/%s: %v\n", os, arch, err)
return
}
}
}
fmt.Println("Cross-compiling complete. Find binaries in 'dist' directory.")
}
这段代码定义了一个targetPlatforms
的map,列出了需要编译的操作系统和架构。然后使用Go语言的os
和exec
包来设置并执行交叉编译命令。这个例子简单明了,展示了如何在Go语言中进行多平台编译的基本方法。
评论已关闭