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