golang windows 搭建 linux交叉编译
原文 http://dev.cmcm.com/archives/340
1.准备工作
下载 git(http://git-scm.com/download/)
下载vim74 已经配置好的 (http://pan.baidu.com/s/1hq6euDA)
下载golang 1.4 (https://golang.org/dl/)
下载TDM-GCC 32位和64位 (http://tdm-gcc.tdragon.net/download)
2.golang 环境搭建
安装 TDM-GCC 32位 64位 并设置 path
解压缩 go 并设置 (目录需要自行修改)
GOROOT="D:\go" "golang 所在目录" GOBIN="D:\go\bin" "go 可执行文件目录(go install 三方包 后默认出现的地方 不设置 会走3方包的路径)" GOPATH="D:\3rd" "三方包的路径" GOOS="windows" "默认编译的系统" GOARCH="amd64" "i386 或 amd64"
都配置好后 打开go\src\ 新建 build.cmd写入内容如下
set CGO_ENABLED=0 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::x64块 set GOARCH=amd64 set GOOS=windows call make.bat --no-clean set GOOS=linux call make.bat --no-clean :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::arm块 set GOARCH=arm set GOOS=linux call make.bat --no-clean
保存后运行 会直接生成windows 与linux 的交叉环境
此时 环境应该已经ok了 可以 在cmd 里面实验一下go 看是否有反映
下载对应的go 包
go get github.com/nsf/gocode go get github.com/jstemmer/gotags go get github.com/bradfitz/goimports go get code.google.com/p/rog-go/exp/cmd/godef
这里需要注意一下 code.google.com/p/rog-go/exp/cmd/godef
包内部有个bug 我的路径是 D:\3dr\src\code.google.com\p\rog-go\exp\cmd\godef
需要做如下修改(这里原来是 /src/pkg 需要修改为/pkg 原因是 从某个版本开始pkg 目录被移动出src了 如果使用旧的 会导致跳转代码 失败)
修改成功后重新编译一下godef(go install code.google.com/p/rog-go/exp/cmd/godef)
3.GVIM 配置
安装git 环境变量选择
在git的目录下找到Cmd 目录进入后新建文件curl.cmd内容如下
@rem Do not use "echo off" to not affect any child calls. @setlocal @rem Get the abolute path to the parent directory, which is assumed to be the @rem Git installation root. @for /F "delims=" %%I in ("%~dp0..") do @set git_install_root=%%~fI @set PATH=%git_install_root%\bin;%git_install_root%\mingw\bin;%PATH% @if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH% @if not exist "%HOME%" @set HOME=%USERPROFILE% @curl.exe %*
解压缩 下载好的vim74 打开 vim74\x64 修改图片中的地址后 运行
然后打开一个go 文件试试
vim 中使用了neobuild 管理包
通用配置在 vim74\x64\vimfiles\custom go部分
使用了 vim-go 具体快捷键可以登录 https://github.com/fatih/vim-go
常用 F10 打开函数与文件列表
:make 编译 ctrl+] 跳转函数实现 ctrl+o 跳回 alt+c 复制选中 alt+v 粘贴
交叉编译 build.sh(因为装了git 所以可以直接识别sh)
GOOS=linux GOARCH=amd64 go build