概要:ファイルチェーンのどこかにCファイルを含む.goソースファイルをクロスコンパイルしようとするとMacOSのWindows AMD64をターゲットにして、私は次のようになる:Go/Golang MacからWindowsへのクロスコンパイル:致命的なエラー: 'windows.h'ファイルが見つかりません。
/usr/local/go/src/runtime/cgo/gcc_windows_amd64.c:8:10: fatal error: 'windows.h' file not found
純粋にGoコードがエラーなしでクロスコンパイルされているようだ。 Cファイルが含まれているときにクロスコンパイル用の適切なヘッダファイルを取得する方法はありますか?
詳細::私はいくつかの.goプロジェクトで作業するためにMacにLiteIDEをインストールしました.LiteIDEは他のプラットフォームをビルドターゲットとして比較的簡単にターゲット設定することができます。私が持っていた小さなテストプロジェクトでそれをテストしました。純粋にGoです。エラーなく実行されたようです。
後で私は現在のより大きなプロジェクトでそれを試し、IDEでいくつかのenv設定を調整しなければなりませんでした(CGOが有効になっていないCファイルについての苦情とGOPATHは.bash_profile 。そして
/usr/local/go/src/runtime/cgo/gcc_windows_amd64.c:8:10: fatal error: 'windows.h' file not found
は、Linux(OSのLinuxでは、アーチAMD64)をターゲットにしようとしているエコー$変数にうまく検証)の結果は、私は二重の私はXCodeのインストールされているチェックしました
# runtime/cgo
ld: unknown option: --build-id=none
clang: error: linker command failed with exit code 1 (use -v to see invocation)
を与えます。私もLiteIDEはENVの設定を上書きし、何を無視するようですので、これはLiteIDE(からわずかではないことを確認
go version go1.6.2 darwin/amd64
:
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr with-gxx-include- dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/c++/4.2.1
Apple LLVM version 7.3.0 (clang-703.0.29)
Target: x86_64-apple-darwin15.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
を...およびGoが最新バージョンである:GCCがインストールされていますターミナルに?);コンソールでの例の試みが得られます。
MyUsername$ env GOOS=windows GOARCH=amd64 CGO_ENABLED=1 go build -v
golang.org/x/net/html/atom
runtime/cgo
golang.org/x/crypto/ssh/terminal
golang.org/x/net/html
github.com/howeyc/gopass
# runtime/cgo
/usr/local/go/src/runtime/cgo/gcc_windows_amd64.c:8:10: fatal error: 'windows.h' file not found
github.com/andybalholm/cascadia
github.com/PuerkitoBio/goquery
私は、アプリケーションが移動中のネットワークライブラリを使用して、私はネイティブライブラリはまだギャップを埋めるためにいくつかのCファイルを呼び出していると思うので、これがあると思います。 Linux/Windowsでビルドするための適切なライブラリを入手する方法はありますか?これを動作させるにはターゲットプラットフォーム上で行う必要がありますか?
ホストプラットフォーム上のネイティブアプリケーションを構築することは問題なく動作するようです。
あなたの打ち鳴らすはむしろ時代遅れのようです(あなたドン実際にはgcc btwを持っていない、 s clang)。 – OneOfOne
@OneOfOneアプリストアをチェックすると、それは私にとって利用可能な最新のXcodeのようですか? (Xcodeにはclangコンパイラが含まれていませんか?) –
Xcodeのバージョンについては100%確信していませんが、あなたのgccのバージョンは4.2です。1は非常に古くなっていますが、WindowsやLinux用のネイティブCコードをコンパイルできるツールチェーンをインストールする必要があります。 すべてが失敗した場合、LinuxおよびWindows用のVMの設定を調べることができます。 – OneOfOne