在 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 相關的環境變量來指定交叉編譯器。