最近想学GO编程,在这里https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins介绍了现有的各种IDE,因为考虑到还会用Python,于是就用了比较熟悉的Eclipse(CCS也是基于Eclipse的)+GoClipse,但是安装的说明文档只有GoClipse的安装说明https://github.com/GoClipse/goclipse/blob/latest/documentation/Installation.md#installation和使用文档https://github.com/GoClipse/goclipse/blob/latest/documentation/UserGuide.md#user-guide两个,基本找不到其他的安装说明(可能是我姿势不对?),而有的两个文档说明也不是很详细,于是在安装时候踩了好多坑,记录如下
首先下载最新版Eclipse,推荐下载C/C++ Package,因为GO调试需要CDT相关组件,C/C++版本已经包括这个组件了,后面可以少一些下载量。Linux版本的解压之后就能用,但在此之前要先安装JRE8或以上版本,但Ubuntu14.04LTS没有正式的JRE8,只有从别的地方下了。首先安装JRE8:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
第一行添加一个launchpad.net的源,然后是安装openjdk8。如果不需要开发java软件的话可以把openjdk-8-jdk改为openjdk-8-jre,只安装运行环境。
安装好jre之后eclipse就可以运行了。运行eclipse,然后点Help -> Install New Software…,然后点Work with:右边的Add…,添加http://goclipse.github.io/releases/,名字可以自取,然后点OK,在Work with:下拉菜单中选择刚添加的http://goclipse.github.io/releases/,等GoClipse组件出现。
选中GoClipse,然后确保下面的Contact all update sites during install to find required software被选中,然后点Next至GoClipse插件安装完成。如果上面下载的不是C/C++ Package的话在安装过程中会下载安装CDT。
然后安装golang工具。从https://golang.org/dl/下载Linux系统的软件包,然后解压到一个目录,我放到~/Software/go下面了,这个目录是GOROOT,存放go编译器等软件的目录,然后再新建一个不同的目录,作为下载的软件包存放目录,我放在~/workspace/gopath下面,这个目录是GOPATH目录。然后Ctrl+Alt+T打开terminal,输入:
nano ~/.profile
在打开的文件里最后添加几行:
export GOROOT=$HOME/Software/go
export GOPATH=$HOME/workspace/gopath
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin
将相关目录添加到环境变量中。最开始我没有编辑.profile文件,并且把go工具放到默认目录/usr/local/go下面,直接在terminal里输入export GOROOT=/usr/local/go,导致重启之后经常找不到go软件,每次都需要加sudo,输入完整路径才能运行。到这go安装完成。
然后安装gocode,guru,godef和gometalinter。gocode提供代码补全功能,godef可以查找函数所在的文件,gometalinter提供代码检查功能。如果网络比较好,可以运行:
go get github.com/nsf/gocode
go build github.com/nsf/gocode
go get godoc.org/golang.org/x/tools/cmd/guru
go build godoc.org/golang.org/x/tools/cmd/guru
go get github.com/rogpeppe/godef
go build github.com/rogpeppe/godef
go get github.com/alecthomas/gometalinter
go build github.com/alecthomas/gometalinter
自动下载和编译相关工具。如果网络不好,可以先打包下载下来,然后解压到$GOPATH/src下面对应的文件夹下。比如第一个解压完成的文件夹为$GOPATH/src/ github.com/nsf/gocode。guru是go tools其中的一个工具,可以从https://github.com/golang/tools/下载整个工具包,然后只编译guru。下载完成后,进入$GOPATH/src目录,运行:
go build github.com/nsf/gocode
go build godoc.org/golang.org/x/tools/cmd/guru
go build github.com/rogpeppe/godef
go build github.com/alecthomas/gometalinter
编译。
在下载编译gocode时候我踩了个大坑,情况是这样的:
有release啊,于是我就习惯性点了release,然后下载最上面的release
可惜没注意时间,编译完建立工程测试时候总是报Can’t find the package clause错误,检查错误里面对应的文件也没问题,怀疑是gocode没放到正确的目录里面,于是在几个bin目录里来回复制粘贴,可总是不好使。后来搜了一下gocode go 1.8,发现有人提到go版本和gocode版本需要一样,这才看到最新的release时间是2015年,后来从github上打包下载个最新的代码,然后编译,这才终于好使了。
将前三个编译完的可执行文件复制到$GOPATH/bin文件夹下,gometalinter可执行文件复制到$GOROOT/bin下,打开terminal,运行
gometalinter –install
然后打开eclipse,点Window -> Preferences,点击左边Go选项,在Go Installation里面填上go工具安装目录,下面的GOPATH如果设置了环境变量的话应该会显示gopath目录,保持不变即可。填好之后点Apply
然后点左边Tools,在上面三栏中填上对应软件的目录,下面的gofmt可以使用默认,填好之后点Apply,然偶OK关闭窗口
这样配置好之后就可以用Eclipse写go程序了。代码提示功能和代码检查功能也都正常。
【后记】就在我快写完这一篇,在网上随便转转,发现了一个好用的IDE,LiteIDE,开箱即用,和CodeBlocks一样间接,自带跨平台交叉编译配置,于是感觉上面那些工作都白费了