源码编译安装go,ERROR: Cannot find /root/go1.4/bin/go - Go语言中文社区

源码编译安装go,ERROR: Cannot find /root/go1.4/bin/go


go的源码安装非常简单,只需运行源码包中src/all.bash,等到出现 ALL TESTS PASSED 字样就安装好了,但是在源码安装1.5版本以上的go时会报 ERROR: Cannot find /root/go1.4/bin/go 这个错误,这是由于go 1.5版以后的编译安装需要1.4版本go,所以如果想要通过源码方式安装高版本go,必须先安装好1.4版本的go。



先clone go仓库(https://github.com/golang/go.git),然后checkout 到 1.4 分支,并安装该版本


[root@localhost software]# git clone https://github.com/golang/go.git
Cloning into 'go'...
remote: Counting objects: 322777, done.
remote: Compressing objects: 100% (73/73), done.
remote: Total 322777 (delta 32), reused 54 (delta 28), pack-reused 322675
Receiving objects: 100% (322777/322777), 147.71 MiB | 3.49 MiB/s, done.
Resolving deltas: 100% (255582/255582), done.

[root@localhost software]# cd go
[root@localhost go]# git branch
* master
[root@localhost go]# git checkout release-branch.go1.4
Branch release-branch.go1.4 set up to track remote branch release-branch.go1.4 from origin.
Switched to a new branch 'release-branch.go1.4'
[root@localhost go]# git branch
  master
* release-branch.go1.4

运行 src/all.bash 安装脚本,稍等片刻即可安装成功:

[root@localhost go]# cd src/
[root@localhost src]# ls
all.bash          archive  clean.bash  compress   debug     flag  html      io       log        make.rc        net        race.bat  run.bat  strconv    syscall  unicode
all.bat           bufio    clean.bat   container  encoding  fmt   image     lib9     make.bash  math           os         reflect   run.rc   strings    testing  unsafe
all.rc            builtin  clean.rc    crypto     errors    go    index     libbio   make.bat   mime           path       regexp    runtime  sudo.bash  text
androidtest.bash  bytes    cmd         database   expvar    hash  internal  liblink  Make.dist  nacltest.bash  race.bash  run.bash  sort     sync       time
[root@localhost src]# ./all.bash 
# Building C bootstrap tool.
cmd/dist

# Building compilers and Go bootstrap tool for host, linux/amd64.
lib9
libbio
liblink
cmd/cc
cmd/gc
cmd/6l

....

# Checking API compatibility.
Skipping cmd/api checks

real	0m0.538s
user	0m0.310s
sys	0m0.191s

ALL TESTS PASSED

---
Installed Go for linux/amd64 in /root/software/go
Installed commands in /root/software/go/bin
*** You need to add /root/software/go/bin to your PATH.

把安装好的go项目复制一份到/root/go1.4:

[root@localhost go]# pwd
/root/software/go
[root@localhost go]# cp -R /root/software/go /root/go1.4
[root@localhost go]# ls /root/go1.4/
api  AUTHORS  bin  CONTRIBUTORS  doc  favicon.ico  include  lib  LICENSE  misc  PATENTS  pkg  README  robots.txt  src  test  VERSION
[root@localhost go]# /root/go1.4/bin/go version
go version go1.4-bootstrap-20170531 linux/amd64

下载你要安装的go版本源码包(这里是 go1.9.2版),再按之前的步骤安装一遍

[root@localhost software]# curl -SL -o go1.9.2.tar.gz  https://github.com/golang/go/archive/go1.9.2.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15.6M    0 15.6M    0     0  1166k      0 --:--:--  0:00:13 --:--:-- 2802k
[root@localhost software]# ll go1.9.2.tar.gz 
-rw-r--r--. 1 root root 16363003 Nov  7 17:39 go1.9.2.tar.gz
[root@localhost software]# tar zxvf go1.9.2.tar.gz

[root@localhost software]# cd go-go1.9.2/
[root@localhost go-go1.9.2]# ls
api  AUTHORS  CONTRIBUTING.md  CONTRIBUTORS  doc  favicon.ico  lib  LICENSE  misc  PATENTS  README.md  robots.txt  src  test  VERSION
[root@localhost go-go1.9.2]# cd src/
[root@localhost src]# ./all.bash 
##### Building Go bootstrap tool.
cmd/dist

##### Building Go toolchain using /root/go1.4.
bootstrap/cmd/internal/dwarf
bootstrap/cmd/internal/objabi
bootstrap/cmd/internal/src
.....
ALL TESTS PASSED

---
Installed Go for linux/amd64 in /root/software/go-go1.9.2
Installed commands in /root/software/go-go1.9.2/bin
*** You need to add /root/software/go-go1.9.2/bin to your PATH.

看到 ALL TESTS PASSED 说明安装成功


设置几个环境变量:

在 /etc/profile 文件中添加以下几行

export GOROOT=/root/software/go-go1.9.2
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN

然后执行 source /etc/profile 命令

[root@localhost src]# source  /etc/profile

[root@localhost src]# env | grep GO
GOBIN=/root/software/go-go1.9.2/bin
GOROOT=/root/software/go-go1.9.2
[root@localhost src]# echo $PATH
/usr/local/luajit/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/software/go-go1.9.2/bin
[root@localhost src]# go version
go version go1.9.2 linux/amd64


Hello go!

package main

import "fmt"

func main(){
    fmt.Println("Hello go!")
}

[root@localhost go]# go run hellogo.go 
Hello go!

That's all^^





版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zhang197093/article/details/78468918
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-09-13 20:58:59
  • 阅读 ( 2238 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢