linux - 在 Linux(Mint) 中安装 Go 并修改 bashrc

标签 linux mercurial go

我想在我的 Linux Mint 机器上安装 Google 的 Go 语言。我是 Linux 的新手,所以要遵循我读过的一些说明并不容易。也就是说,有人告诉我编辑/修改 bashrc 文件:

 export GOROOT=$HOME/gosource
 export GOARCH=amd64
 export GOOS=linux
 export GOBIN=$HOME/bin
 export PATH=$PATH:$GOBIN

我不知道该怎么做。我输入了 gedit ~/.bashrc

进入终端,出现一个空白页面。我输入了代码并保存了它。然后做了

hg clone -u https://go.googlecode.com/hg/ go

获取源代码。这个对吗?因为我随后尝试编译代码并出现了一长串错误(我没有 - 不幸的是我在 mo 使用不同的 PC)。

但如果有人能帮我安装 Go,我将不胜感激。

解决方案:

除了下面答案中提到和解决的各种问题外,我忘记安装了以下

sudo apt-get install bison ed gawk gcc libc6-dev make

在 golang.com 安装页面的顶部提到了它。

最佳答案

除其他外,您尝试将存储库克隆到 ~/go 并编辑 ~/.bashrc 以将 $GOROOT 指向 ~/gosource.

阅读 Go Getting Started仔细说明。要么复制并粘贴命令,要么非常仔细地检查你输入的内容;在你按下回车之前非常仔细地检查输入。对于命令,$ 符号代表命令提示符,不要键入它。请记住,Linux 区分大小写,/\ 之间的区别很重要。非常仔细地检查命令的输出;输出是否有意义。运行诊断命令,例如 envpwdwhichuname。当您在 Stack Overflow 答案中看到滚动条时,滚动浏览所有代码和输出。

首先,设置~/.bashrc

$ gedit ~/.bashrc

export GOROOT=$HOME/go
export GOARCH=amd64
export GOOS=linux
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN

关闭所有打开的终端窗口,然后打开一个新的终端窗口来检查新的 ~./bashrc 和其他值。

$ env | grep '^\(GO\|HOME=\|PATH=\)'
GOBIN=/home/peter/go/bin
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/peter/go/bin
GOARCH=amd64
HOME=/home/peter
GOROOT=/home/peter/go
GOOS=linux
$ cd $GOROOT/src
$ pwd
/home/peter/go/src
$ uname -a
Linux peter 2.6.32-31-generic #61-Ubuntu SMP Fri Apr 8 18:25:51 UTC 2011 x86_64 GNU/Linux

然后将存储库克隆到 $GOROOT,您将克隆到同一位置并从该位置进行编译。

$ hg clone -u release https://go.googlecode.com/hg/ $GOROOT
requesting all changes
adding changesets
adding manifests
adding file changes
added 8441 changesets with 31916 changes to 4421 files (+1 heads)
updating to branch release-branch.r57
2702 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd $GOROOT/src
$ ./all.bash
< SNIP OUTPUT >
ALL TESTS PASSED
---
Installed Go for linux/amd64 in /home/peter/go.
Installed commands in /home/peter/go/bin.
The compiler is 6g.
$ which 6g
/home/peter/go/bin/6g

你还没有发布你的输出,所以我只能猜测你的问题是什么。

比如你说“目录是Go”,就应该是“go”;由于 Linux 区分大小写,因此“Go”和“go”是不同的。

如果您从 hg clone 命令中省略了 $GOROOT 目标,或者未设置 $GOROOThg clone 将默认为 hg 目录。例如,

$ env | grep '^GOROOT'
GOROOT=
$ hg clone -u release https://go.googlecode.com/hg/ $GOROOT
destination directory: hg

因为你有 GOARCH=amd64,你应该在 x86_64 处理器上运行 64 位版本的 Linux Mint。您的 uname -a 输出说明了什么?您希望 6g6l 程序在 x86_64 处理器上编译和链接,该处理器应该在您的 $GOBIN 目录,它应该在您的 $PATH 中。

$ env | grep '^\(GOBIN\|PATH=\)'
GOBIN=/home/peter/go/bin
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/peter/go/bin
$ which 6g
/home/peter/go/bin/6g

您还应该通过阅读 ./all.bash 命令输出的末尾看到这一点。

ALL TESTS PASSED
---
Installed Go for linux/amd64 in /home/peter/go.
Installed commands in /home/peter/go/bin.
The compiler is 6g.

关于linux - 在 Linux(Mint) 中安装 Go 并修改 bashrc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6019717/

相关文章:

windows - linux下maven-jetty-plugin无法绑定(bind)地址

c - c中的linux TCP多客户端回显服务器

Mercurial:更好的命令行差异?

Mercurial "default-push not found!"?

go - 如何在 golang etcd 客户端中设置一致性选项

android - 是否有任何基于 Java 的 C/C++ 编译器?

regex - 使用命令 sed 用正则表达式替换变量错误

mercurial - 使用 hg Convert merge 2 个存储库而不是 hg pull -f 有优势吗?

go - 如何使用反射将值分配给嵌套结构

go - 在Go中将* _Ctype_float转换为float32