在macOS下启用CGO_ENABLED的交叉编译
在macOS下启用CGO_ENABLED的交叉编译
在启用CGO_ENABLED的情况下,尝试使用下面命令进行Windows平台的交叉编译:
$ CGO_ENABLED=1 GOOS=windows GOARCH=386 go build -x -v -ldflags "-s -w"
出现错误如下:
# runtime/cgo gcc_libinit_windows.c:7:10: fatal error: 'windows.h' file not found
安装mingw-w64
# piao @ PiaodeMacBook-Pro in ~ [11:10:19] $ brew install mingw-w64 ==> Downloading https://homebrew.bintray.com/bottles/mingw-w64-5.0.4_1.mojave.bottle.tar.gz Already downloaded: /Users/piao/Library/Caches/Homebrew/downloads/954c462f9298678f85a2ca518229e941d1daed366c84c339900c756e7ca8ad25--mingw-w64-5.0.4_1.mojave.bottle.tar.gz ==> Pouring mingw-w64-5.0.4_1.mojave.bottle.tar.gz 🍺 /usr/local/Cellar/mingw-w64/5.0.4_1: 7,915 files, 747.7MB # piao @ PiaodeMacBook-Pro in ~ [11:10:56] $ which x86_64-w64-mingw32-gcc /usr/local/bin/x86_64-w64-mingw32-gcc
编译x64
可执行文件
$ CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ GOOS=windows GOARCH=amd64 go build -x -v -ldflags "-s -w" -o test_x64.exe
静态库
$ CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ GOOS=windows GOARCH=amd64 go build -buildmode=c-archive -x -v -ldflags "-s -w" -o bin/x64/x64.a main.go
动态库
将-buildmode=c-archive
改为-buildmode=c-shared
即可
编译x86
可执行文件
$ CGO_ENABLED=1 CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ GOOS=windows GOARCH=386 go build -x -v -ldflags "-s -w" -o test_x86.exe
静态库
$ CGO_ENABLED=1 CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ GOOS=windows GOARCH=386 go build -buildmode=c-archive -x -v -ldflags "-s -w" -o bin/x86/x86.a main.go
动态库
将-buildmode=c-archive
改为-buildmode=c-shared
即可
原文连接:https://www.dllhook.com/post/244.html#toc_1