MacOSでCGO_を有効にするENABLEDのクロスコンパイル

4051 ワード

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-w 64
# 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

 
コンパイルx 64
実行可能ファイル
$ 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に変更すればよい
コンパイルx 86
実行可能ファイル
$ 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
posted @
2019-06-03 23:07菜鳥の進撃読書(
...) コメント(
...) コレクションの編集