本文以Windows平台下编译Linux应用举例,记录一下Golang交叉编译。
1 | # help |
一、设置环境变量
1 | $ set GOARCH=amd64 |
在终端CMD输入没用,我直接在环境变量设置了
GOARCH
和GOOS
。这样就无法在Windows运行,因为go run
的也是指linux平台。
二、编译
1 | $ go build xx.go |
三、依赖错误
编译的时候,出现 unrecognized import path "golang.org/x/sys/unix"
错误,本来就是下载依赖库网络超时,但科学上网也没有解决。
在Ubuntu下编译也会出现这个错误
详细错误信息:
1 | Fetching https://golang.org/x/sys/unix?go-get=1 |
解决办法: 通过手动下载Github上的3个依赖项目到 $GOPATH/src/golang.org/x/
目录
- github.com/golang/net.git
- github.com/golang/sys.git
- github.com/golang/tools.git
以下是在Linux的操作日志(Windows也是通过的办法):
1 | root@ubuntu:~/golangworks/src$ mkdir -p $GOPATH/src/golang.org/x/ |
四、平台
1.GOOS:目标平台的操作系统
- windows
- linux
- darwin (MacOX)
- freebsd
2.GOARCH:目标平台的体系架构
- 386 (32位x86)
- amd64 (64位x86)
- arm