go 会将安装位置记录到二进制的GOROOT变量中,如果需要调整安装目录,可以设置$GOROOT_FINAL=/path/to/goTree, 这样编译完后会提示将/tmp/go移动到
/path/to/goTree目录(这个参数只能在编译阶段有效,如果在编译后移动Go tree则参考步骤5)。
$ ls /tmp/go -F api/ AUTHORS bin/ CONTRIBUTORS doc/ favicon.ico include/ lib/ LICENSE misc/ PATENTS pkg/ README robots.txt src/ test/ VERSION $ ls /tmp/go/bin #源码包自带的二进制工具命令, 没有 godoc go gofmt $ ls /tmp/go/pkg/tool/linux_amd64/ addr2line asm cgo compile dist doc fix link nm objdump pack pprof tour yacc $ /tmp/go/bin/go env |grep -E 'GOROOT|GOTOOLDIR' GOROOT="/tmp/go" #可见Go tree被安装到预期位置 GOTOOLDIR="/tmp/go/pkg/tool/linux_amd64"
将/tmp/go/bin加入到PATH中,即可使用。
移动 Go 源码目录
可以将编译过的Go Tree移动到其它目录,然后修改GOROOT环境变量即可。
$ mkdir /tmp/xxx $ export GOROOT=/tmp/xxx $ mv * /tmp/xxx $ /tmp/xxx/bin/go env |grep -E 'GOROOT|GOTOOLDIR' GOROOT="/tmp/xxx" #Go tree和工具链自动调整 GOTOOLDIR="/tmp/xxx/pkg/tool/linux_amd64" #设置PATH和GOPATH $ export PATH=/tmp/xxx/bin:$PATH $ which go /tmp/xxx/bin/go $ go version go version go1.4 linux/amd64
安装额外的工具如godoc, vet, cover(二进制发布版中包含这些工具,无需额外安装):
一些Go工具位于go.tools仓库中,需要额外安装。
$ #安装所有工具: $ go get golang.org/x/tools/cmd/... #...是通配符,参考: go help packages $ go get golang.org/x/tools/cmd/godoc #只安装godoc工具 $ ls bin/ #多了godoc go godoc gofmt $ ls pkg/tool/linux_amd64/ #多了vet,cover addr2line asm cgo compile cover dist doc fix link nm objdump pack pprof tour trace vet yacc
go 命令会将godoc安装到$GOROOT/bin或者$GOBIN,其它的go tool如cover、vet安装到$GOROOT/pkg/tool/$GOOS_$GOARCH。可以用go tool cover或go tool vet命令来调用后面目录中的程序。
工具链测试
创建和设置GOPATH(非必须):
$ mkdir -p $HOME/go/{src,bin,pkg} $ export GOPATH=$HOME/go $ mkdir $HOME/go/src/demo $ cd !$
编写一个测试文件如 hello.go
package main import "fmt" func main() { fmt.Printf("hello, world\n") }
编译并执行, -x选项可以打印出编译过程
$ go build -x demo.go WORK=/tmp/go-build333633893 mkdir -p $WORK/command-line-arguments/_obj/ mkdir -p $WORK/command-line-arguments/_obj/exe/ cd /home/ksyun/golang/src /home/ksyun/local/go/pkg/tool/linux_amd64/compile -o $WORK/command-line-arguments.a -trimpath $WORK -p main -complete -buildid ed5feda32ea5b5ab51ac7fe9d1193005f6f99836 -D _/home/ksyun/golang/src -I $WORK -pack ./demo.go cd . /home/ksyun/local/go/pkg/tool/linux_amd64/link -o $WORK/command-line-arguments/_obj/exe/a.out -L $WORK -extld=gcc -buildmode=exe -buildid=ed5feda32ea5b5ab51ac7fe9d1193005f6f99836 $WORK/command-line-arguments.a mv $WORK/command-line-arguments/_obj/exe/a.out demo hello, world
环境变量(可选)编译工具链可以使用以下环境变量进行配置;
参考