Golang 編譯windows應用程式

jiftle發表於2024-11-12

因為我們更喜歡在Linux上開發程式, 所以生成交叉編譯器,以便在Linux上交叉編譯出windows程式。

安裝minGW:在Linux上執行gcc交叉編譯生成windows程式

我們用到Cgo,因此需要安裝 C 語言交叉編譯器

sudo apt-get install gcc-mingw-w64

下載Go語言的原始碼

git clone https://github.com/golang/go.git

32-bit go-compiler for windows

GOOS=windows GOARCH=386 CGO_ENABLED=1 CXX_FOR_TARGET=i686-w64-mingw32-g++ CC_FOR_TARGET=i686-w64-mingw32-gcc ./make.bash

64-bit 編譯器

GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CXX_FOR_TARGET=x86_64-w64-mingw32-g++ CC_FOR_TARGET=x86_64-w64-mingw32-gcc ./make.bash

非交叉編譯,生成Linux程式

GOOS=linux GOARCH=amd64 CGO_ENABLED=1 CXX_FOR_TARGET=g++ CC_FOR_TARGET=gcc ./make.bash

生成Go編譯器之後,以下命令執行交叉編譯,生成windows程式

GOOS=windows GOARCH=386 go build

Cgo

最終的目標是要生成windows程式,所以Cgo引用的庫檔案也必須是windows版本的。 以ffmpeg庫為例:參考截圖,在ffmpeg資料夾之下,新建一個資料夾,名為libwin, 用於儲存windows版本的庫檔案(dll檔案)。

pkgconfig 也需要做相應調整。而標頭檔案無需變動。

準備工作只有這麼多了。透過指定pkgconfig的路徑,就能夠交叉編譯Cgo程式了。 GOOS=windows GOARCH=386 PKG_CONFIG_PATH=/foo/bar go build

2015-04-21 作者 Sleepy Programmer

相關文章