go install
来源:互联网 发布:人工智能 高等数学 编辑:程序博客网 时间:2024/04/29 10:48
- 译者
- 简介
- 安装C语言工具
- 安装Mercurial
- 获取代码
- 安装Go
- 编写程序
- 进一步学习
- 更新go到新版本
- 社区资源
- 环境变量
译者
原文:http://golang.org/install.html 翻译:柴树杉 (chaishushan@gmail.com) 翻译:Bian Jiang (borderj@gmail.com)
简介
Go是一个开源项目,采用BSD授权协议。 该文档介绍如何获取Go源代码,如何编译,以及如何运行Go程序。
目前有两种方式使用Go语言。这里主要讲述如何使用Go专用的gc系列工具 (6g、8g等)。另一个可选的编译器是 基于gcc后端的 gccgo编译器。关于gccgo的细节清参考安装并使用gccgo编译器 。
The Go compilers support three instruction sets. There are important differences in the quality of the compilers for the different architectures.
Go编译器可以支持三种指令集。不同体系结构生成的代码质量有一些差别:
amd64 (a.k.a. x86-64); 6g,6l,6c,6a
最成熟的实现,编译器在寄存器级别优化,可以生成高质量的目标代码(有时候gccgo可能更优)。386 (a.k.a. x86 or x86-32); 8g,8l,8c,8a
amd64平台的的完整移植。arm (a.k.a. ARM); 5g,5l,5c,5a
在完善中。目前只支持生成Linux的二进制文件,浮点支持比较匮乏,并且生成目标代码时还存在bug。还没有完全通过测试集,也没有任何优化。
除了系统级的接口,go需要的运行时环境对各个平台都是一致的。包含 mark-and-sweep 垃圾内存自动回收(更高效的算法实现正在开发中), 数组、字符串、智能堆栈 以及 goroutine 等。
目前支持以下系统:FreeBSD、Linux、Native Client 和 OS X (a.k.a. Darwin)。Microsoft Windows 目前正在移植中, 功能还不完整。关于各个系统平台的详细说明,请参考 [#环境变量] 。
安装C语言工具
Go的工具链采用C语言编写,构建需要安装以下开发工具:
- GCC,
- C语言标准库,
- the parser generator Bison,
- make,
- awk, 和
- ed (编辑器).
对于 OS X 系统,以上工具是Xcode的一部分。
对于 Ubuntu/Debian 系统,运行安装命令:
sudo apt-get install bison ed gawk gcc libc6-dev make
安装Mercurial
在进行后面的操作之前需要安装Mercurial版本管理系统(可以输出hg名词检测是否安装)。输入以下命令安装:
sudo easy_install mercurial
对于 Ubuntu/Debian 系统,easy_install 命令可以用
apt-get install python-setuptools python-dev build-essential安装。 如果上述命令安装失败的话,还可以尝试去官方网站 下载 。
获取代码
以下命令会创建一个go目录。切换到相应目录,并且确保当前位置不存在go目录,运行命令:
$ hg clone -r release https://go.googlecode.com/hg/ go
安装Go
编译go环境:
$ cd go/src$ ./all.bash
编译完成后,结尾会打印以下信息。
--- cd ../test---Installed Go for linux/amd64 in /home/you/go.Installed commands in /home/you/go/bin.*** You need to add /home/you/go/bin to your $PATH. ***The compiler is 6g.
其中N对于不同的版本会有差异,表示没有通过测试的数目。
编写程序
以file.go代码为例,用以下命令编译:
$ 6g file.go
6g是针对amd64指令的编译器,它的输出文件为 file.6。其中 ‘6’ 表示文件是 amd64指令的输出文件。 如果是386和arm 处理器,后缀则为 ‘8’ 和 ‘5’。 也就是说,如果你用的是386处理器,那么应该用8g命令编译, 输出的文件为file.8。
然后用以下命令连接:
$ 6l file.6
运行程序:
$ ./6.out
一个完整的例子:
$ cat >hello.go <<EOFpackage mainimport "fmt"func main() { fmt.Printf("hello, world\n")}EOF$ 6g hello.go$ 6l hello.6$ ./6.outhello, world$
在连接的时候,没有必要列出hello.6引用的包(这里用到了fmt包)。 连接器(这里是6l)会自动从hello.6文件获取包的引用信息。
如果是编译更复杂的过程,那么可能需要使用Makefile。相关的例子可以 参考
$GOROOT/src/cmd/godoc/Makefile</code>
和
$GOROOT/src/pkg//Makefile
关于Go工程的更多说明清参考 文档。
进一步学习
- 开始阅读 Go语言入门教程 。
- 参考 Wiki Codelab 编写一个web程序。
- 阅读 Effective Go
- 阅读 Go语言文档
更新go到新版本
当有新版本发布的时候,会在Go Nuts 邮件列表中通知。可以用以下命令获取最新的发布版本:
$ cd go/src$ hg pull$ hg update release$ ./all.bash
社区资源
在 Freenode IRC 上,可能有很多#go-nuts的 开发人员和用户,你可以获取即时的帮助。
还可以访问Go语言的官方邮件列表 Go Nuts 。
Bug可以在 Go issue tracker 提交。
对于开发Go语言用户,有令一个专门的邮件列表 golang-checkins 。 这里讨论的是Go语言仓库代码的变更。
如果是中文用户,请访问: Go语言中文论坛 。
环境变量
Go编译器需要三个必须的环境变量和一个可选的环境变量。环境变量在.bashrc 或其他配置文件中设置。
$GOROOT
Go安装包的根目录。通常是放在$HOME/go,当然也可以是其他位置。
$GOOS and 和 $GOARCH
这两个环境变量表示目标代码的操作系统和CPU类型。$GOOS选项有linux、 freebsd、darwin (Mac OS X 10.5 or 10.6)和 nacl (Chrome的Native Client接口,还未完成)。$GOARCH的 选项有amd64 (64-bit x86,目前最成熟)、386 (32-bit x86)、 和arm (32-bit ARM,还未完成)。下面是$GOOS和 $GOARCH的可能组合:
$GOOS $GOARCHdarwin 386darwin amd64freebsd 386freebsd amd64linux 386linux amd64linux armnacl 386
$GOBIN (optional) (可选)
指明用于存放go的二进制程序目录。如果是没设置$GOBIN环境变量, 则默认是安装在$HOME/bin。如果设置了该变量,需要确保$PATH 变量也包含这个路径,这样编译器可以找到正确的执行文件。
$GOARM (optional, arm, default=6)
需要说明的是$GOARCH和$GOOS环境变量表示的是目标代码 运行环境,和当前使用的平台是无关的。这个对于交叉编译是很方便的。
在.bashrc文件中设置以下环境变量:
export GOROOT=$HOME/goexport GOARCH=amd64export GOOS=linuxexport PATH=.:$PATH:$GOBIN
检查是否能正常使用:
source ~/.bashrccd ~8g -V
- go install
- install go
- Go Install
- ubuntu go install
- go beego install
- go linux install & config
- go install 基本使用
- go install 命令
- go build 或者 go install 条件编译
- go标准命令详解0.2 go install
- go标准命令详解0.2 go install
- Go命令基础之go install
- go build 和 go install 的区别
- go install 的工作方式
- mac home brew install go
- linux install go & gogs &git
- 【Go】build 和 install命令
- go run go build go install 命令解释
- iOS设计模式(01):观察者
- Android开发:view的几种布局方式
- 【我的面试经历】向着目标开火吧!
- DB2经验收集
- Storm 基本原理
- go install
- MFC对话框关闭
- 二叉树的非递归遍历
- C++ 模板类使用函数指针
- 专题页面一级页面
- 如何使用Kinect模拟多点触控
- 冒泡排序及简单优化
- 11gR2conceptes Memory Architecture中文翻译
- 学习测试第二天