[翻译]Go 环境设置

mikespook · · 1761 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在最近的 weekly 版本中,golang 已经将大多数操作集成到了 go 这一个工具。并且环境变量的设置也发生了变化。不过蛋疼的是,如果不理解 GOPATH 的真正用法,只会让你蛋碎一地。

最常见的错误:

can't load package: .: path "/pla/pla/pla" not inside a GOPATH

这篇文章,简短、清晰的解释了新的 go 环境应当如何设置。

作者 Frank Müller,原文在此:http://mue.tideland.biz/2012/02/go-environment-setup.html?spref=tw

—————-翻译分隔线—————-

Go 环境设置

对于 Go 环境来说,最好的开始就是设置一个所有目录存放的根目录,例如 /home/themue/projects。它将是 Go SDK、第三方包和自有项目的家目录。当前的 weekly 版本可使用命令将 Go 安装到 hg clone -u weekly https://code.google.com/p/go 安装到 go 目录。 文档 http://weekly.golang.org/doc/install.html 对此逐一进行了详述。另外两个目录只能手工创建,别且都分别创建 srcpkg 子目录。这样就得到了如下结构

/home/themue/projects
        /go
                /bin
                ...
                /test
        /own
                /pkg
                /src
        /3rdparty
                /pkg
                /src

为什么有第三方目录?新的 Go 工具采用非常智能的方式将外部包安装在不同的目录中。这是基于环境变量 $GOPATH 的。名字已经说明这是一个路径,而不仅仅是一个目录。go buildgo install 利用 $GOPATH 寻找软件需要编译和链接的关联包。必须先安装外部包才能使用。命令 go get 将会在路径的第一个目录中安装源代码并且编译包。因此上面例子中,顺序应当为

GOPATH=$HOME/projects/3rdparty:$HOME/projects/own

当源代码安装位于 …/own/src 的自有包时,它将会被安装在 …/own/pkg 中。

还有哪个环境变量是必须的?一个是 $GOROOT。它指向了 Go SDK 的根目录,这里是 /home/themue/projects/go。编译后的可执行文件将会安装在 $GOROOT/bin。不过对于 SDK 会有两个选择进行接下来的设置:

  • 二进制文件存放的位置没有问题。标准的 $PATH 将指向这一目录,像这样 PATH=$PATH:$HOME/projects/go/bin.
  • 另一个办法就是弄一个存放所有个人可执行文件和脚本的目录 $HOME/bin,并且将它设置在 $PATH 中。这样就可以在安装 Go 之前设置 GOBIN=$HOME/bin。那么编译的 Go 执行文件就会安装在 $HOME/bin 中。

在你自己的源代码目录里,可能会需要为了不同的项目用到更多的子目录。它们命名方式可能依赖于你使用的其他软件配置管理环境。我的是 code.google.com。因此对于 Tideland Common Go Library(访问 http://code.google.com/p/tcgl)我将代码放在
…/own/src/code.google.com/p/tcgl。这个项目包含了若干个包,无论是否在同一个项目中,都可以通过 code.google.com/p/tcgl/foo 的方式导入。更重要的是,使用我的代码的人可以更加容易的了解到如何将其作为第三方包获取和导入。


有疑问加站长微信联系(非本文作者)

本文来自:mikespook 的博客

感谢作者:mikespook

查看原文:[翻译]Go 环境设置

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1761 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传