适用于需要启用CGO并从OSX定位窗口交叉编译的用户
从我的Mac编译Windows时,我需要启用CGO,因为我已经导入了https://github.com/mattn/go-sqlite3,并且需要它。根据其他答案进行编译给了我和错误:
/usr/local/go/src/runtime/cgo/gcc_windows_amd64.c:8:10: fatal error: 'windows.h' file not found
如果您像我,则必须与CGO一起编译。这是我所做的:
1.我们将使用依赖于CGO的库对Windows进行交叉编译。首先,我们需要安装一个交叉编译器,例如mingw-w64
brew install mingw-w64
这可能会在这里安装它/usr/local/opt/mingw-w64/bin/
。
2.就像其他答案一样,我们首先需要现在将Windows架构添加到go编译器工具链中。编译编译器需要编译器(很奇怪的一句话)编译go编译器需要单独的预编译器。我们可以下载预构建的二进制文件,~/Documents/go
也可以从文件夹中的源代码进行构建,例如:现在,根据最佳答案,我们可以改进Go编译器,但是这次使用CGO_ENABLED=1
和我们单独的预构建编译器GOROOT_BOOTSTRAP
(Pooya是我的用户名):
cd /usr/local/go/src
sudo GOOS=windows GOARCH=amd64 CGO_ENABLED=1 GOROOT_BOOTSTRAP=/Users/Pooya/Documents/go ./make.bash --no-clean
sudo GOOS=windows GOARCH=386 CGO_ENABLED=1 GOROOT_BOOTSTRAP=/Users/Pooya/Documents/go ./make.bash --no-clean
3,现在在编译我们的Go代码时,使用mingw
启用CGO来编译我们的go文件定位窗口:
GOOS="windows" GOARCH="386" CGO_ENABLED="1" CC="/usr/local/opt/mingw-w64/bin/i686-w64-mingw32-gcc" go build hello.go
GOOS="windows" GOARCH="amd64" CGO_ENABLED="1" CC="/usr/local/opt/mingw-w64/bin/x86_64-w64-mingw32-gcc" go build hello.go