摘要:当我尝试交叉编译包含文件链某处C文件的.go源文件,我从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 

Purely Go代码似乎交叉编译没有错误;是否有一种方法可以在涉及C文件时获取适当的头文件进行交叉编译?

更多详细信息:我在我的Mac上安装了LiteIDE,用于处理一些.go项目,LiteIDE使得将其他平台作为构建目标相对简单。我在一个我有过的小测试项目上测试了它,纯粹是Go,它似乎无误地运行。

后来我在当前的大型项目上尝试过它,并且必须在IDE中调整几个env设置才能使其正常工作(在没有启用CGO的情况下对C文件提出投诉,即使设置为.bash_profile,也没有正确设置GOPATH并验证回声$变量就好了),结果是

/usr/local/go/src/runtime/cgo/gcc_windows_amd64.c:8:10: fatal error: 'windows.h' file not found 

试图目标Linux操作系统(OS的Linux,拱AMD64)给出

# runtime/cgo 
ld: unknown option: --build-id=none 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我仔细检查过我安装的XCode。 GCC安装:

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 version go1.6.2 darwin/amd64 

我也查了,这不只是从LiteIDE(因为LiteIDE似乎忽略ENV设置和忽略什么在终端?);在控制台的例子试图给出:

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上构建适当的库,还是需要在目标平台上完成才能工作?

在主机平台上构建本地应用程序似乎没有问题。