windows上交叉编译,遇到找不到linux_amd64/ 包里.a文件的问题,以下是解决思路。

缘由

在windows中交叉编译源码 GOOS=linux GOARCH=amd64 go build -o xyx_srv
抛出错误:
E:\go1.9\pkg\tool\windows_amd64\link.exe: cannot open file E:\go1.9\pkg\linux_amd64/os/signal.a: open E:\go1.9\pkg\linux_amd64/os/signal.a: The system cannot find the path specified.

错误原因:

go 在不同系统的安装包,只会在该系统编译需要的基本包,比如在GOROOT/pkg 里,windows只会有windows_amd64,而交叉编译需要用到linux_amd64.

解决方法:

下载 linux_amd64 go的源码,解压,复制其下的/pkg/linux_amd64 整个文件夹,放到windows64的GOROOT/pkg下。这时候你的GOROOT/pkg/ 下同时存在 windows_amd64 和 linux_amd64。
至此应该就解决了。
如果提示,open E:\go1.9\pkg\linux_amd64/github.com/xxxx.a
则同理,cd到GOPATH/src/github.com/xxxx 包下,执行GOOS=linux GOARCH=amd64 go install.
执行完毕后,会在GOPATH/pkg下生成/linux_amd64/github.com/xxxx.a
以上修复完毕。

你可能感兴趣的:(go)