[golang]建立 linux 執行檔

要在 Windows 上編譯 Go 程式並生成 Linux 可執行檔 (ELF),可以使用 GOOS=linuxGOARCH 環境變數來進行交叉編譯。


1. 交叉編譯 Linux 可執行檔

請打開 Windows cmdPowerShell,然後執行:

set GOOS=linux
set GOARCH=amd64
go build -o myapp-linux

這將會產生一個 Linux 64 位元 可執行檔 myapp-linux

其他架構

如果你的 Linux 目標平台不同,你可能需要調整 GOARCH

平台指令
64 位元 LinuxGOOS=linux GOARCH=amd64 go build -o myapp-linux
32 位元 LinuxGOOS=linux GOARCH=386 go build -o myapp-linux
ARM 64 (樹莓派)GOOS=linux GOARCH=arm64 go build -o myapp-linux

2. 加入靜態編譯(避免 Linux 缺少 glibc

有些 Linux 伺服器(如 Alpine)使用 musl 而非 glibc,導致執行檔無法運行。可以使用 CGO_ENABLED=0 來編譯純靜態執行檔

set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build -o myapp-linux

3. 確保編譯後的執行檔可在 Linux 運行

(1) 使用 file 指令檢查檔案類型

在 Linux 上執行:

file myapp-linux

如果正確編譯,應該會顯示:

myapp-linux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, ...

(2) 賦予執行權限

chmod +x myapp-linux
./myapp-linux

4. 直接從 Windows 交叉編譯並部署到 Linux

如果你要將檔案上傳到 Linux,可以使用 scp 或者 rsync

scp myapp-linux user@server:/home/user/

然後在 Linux 上執行:

chmod +x /home/user/myapp-linux
/home/user/myapp-linux

這樣你就能在 Windows 上成功編譯並運行 Go Linux 執行檔了!

留言

這個網誌中的熱門文章

[Kotlin]如何學習Kotlin

[golang]如何使用 gorm 高效執行批量插入 (可以透過 Create()、CreateInBatches(),或者 原生 SQL 語句 來提升效率)

[Kotlin]Kotlin Multiplatform (KMP) 如何安裝使用和部署