1 | Linux源码安装Golang

安装

1,源码安装

下载地址: https://golang.org/dl/

wget https://dl.google.com/go/go1.11.2.src.tar.gz

编译和安装

 $tar zxvf go1.11.2.src.tar.gz#解压
 $cd go/src
 $./make.bash

报错:

Building Go cmd/dist using /root/go1.4.
ERROR: Cannot find /root/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.

这是因为只有go1.4.x 版本是用gcc 编译的, 以后的版本全是用go编译go。
具体原因参考:http://www.xmoot.com/zmm.html

安装go1.4.x

知道原因后我们就需要先安装go编译器:go1.4。我们仍然采取源码安装方式。
https://golang.org/dl/ 页面找到go1.4的版本。
下载:

wget https://dl.google.com/go/go1.4.3.src.tar.gz

安装:

$tar zxvf go1.11.2.src.tar.gz
$cd go/src
$./make.bash #需要gcc。
$sudo yum install gcc -y #安装gcc

go 编译后会在go源码目录下生成,bin 目录。源码我放到了soft下,所有go所有依赖的包都在这个目录下,我想把它们放到 /usr/local/ 下, 把整个包mv过去就行,如下:

$sudo mv go /usr/local/

设置环境变量

$sudo vi ~/.bashrc 或/etc/profile

加入下面环境变量:参考: http://www.xmoot.com/4xx.html

export GOROOT=/usr/local/go
export GOROOT_BOOTSTRAP=/usr/local/go#这个很重要,编译其他版本时需要这个环境变量。
export GOPATH=$HOME/gocode
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

检查:

$go version

返回

go version go1.4.3 linux/amd64

go编译器就安装好了。

安装go最新版本

接续最前面的流程:

 $tar zxvf go1.11.2.src.tar.gz#解压
 $cd go/src
 $./make.bash

看到:

....
Installed Go for linux/amd64 in /soft/go
Installed commands in /soft/go/bin

说明安装成功了。

我们把go 拷到/usr/local/go1.11:

$sudo mkidr /usr/local/go1.11
$sudo mv go/* /usr/local/go1.11

修改环境变量
我们只要把goroot 改成 新版本就行

#export GOROOT=/usr/local/go #保留go1.4 ,为以后升级用
export GOROOT=/usr/local/go1.11
export GOROOT_BOOTSTRAP=/usr/local/go#这个很重要,编译其他版本时需要这个环境变量。
export GOPATH=$HOME/gocode
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

测试

$cd ~/gocode/src/hello
$vim hello.go

代码:

package main

import "fmt"

func main(){
        fmt.Println("hello, world")
}

运行

$go run hello.go

结果:

hello, world

总结

到这里linux 源码安装golang 就完成了,其实安装golang 不用那么麻烦,用官网上tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz安装特别简单。

接下来我们一起正式开启golang之旅了。

安装过程遇到的报错

错误1:

ERROR: Cannot find /root/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.

因为:export GOROOT_BOOTSTRAP=/usr/local/go 没设置。

错误2:

go build cmd/compile/internal/ssa: /soft/go/pkg/tool/linux_amd64/compile: signal: killed
go tool dist: FAILED: /soft/go/pkg/tool/linux_amd64/go_bootstrap install -gcflags=all= -ldflags=all= -a -i cmd/asm cmd/cgo cmd/compile cmd/link: exit status 1

原因内存不够,被系统kill了。

tail /var/log/messages

可以看到

kernel: Out of memory: Kill process 7963 (compile) score 769 or sacrifice child
Dec 13 00:41:09 localhost kernel: Killed process 7963 (compile) total-vm:1221572kB, anon-rss:372484kB, file-rss:120kB, shmem-rss:0kB

ph.w
ph.w 12个月前

已被 0 人挖起

回应
登录 后发表评论
  • 消灭零回应