在Raspbian上安装go(golang)

hei*_*iko 10 linux installation go raspbian

我检查了不同的论坛,但我仍然没有使它工作.我喜欢在我的Raspberry PI上安装go(golang) - Raspbian:

sudo apt-get install golang
Run Code Online (Sandbox Code Playgroud)

我安装了去和

export GOPATH=$home/pi/gocode
Run Code Online (Sandbox Code Playgroud)

我设置了GOPATH,所以我尝试从主页安装一个带有(sudo go get -u github.com/....)的新程序但是,我只得到" cannot download, $GOPATH not set. For more details see: go help gopath".

我真的因为我看不到的简单错误而疯狂.

如果因为我是Linux和Raspbian的新手而得到一个非常详细的"怎么办"的描述,我会很高兴,所以为真正的dummys所做的一切应该对我来说足够好.谢谢您的帮助.

Pet*_*oor 24

这是有关如何从存储库安装Go on Raspbian Stretch的详细说明.

截至今日2018-01-30,这将安装Go 1.7.Go 1.9.3是下载手动安装的最实际版本.

I.在Raspberry Pi上登录您的用户(我使用的是默认用户pi).

II.安装Go(golang)

pi@pi3-2:~ $ sudo apt update 
pi@pi3-2:~ $ sudo apt install golang
Run Code Online (Sandbox Code Playgroud)

III.为$ HOME目录中的所有go项目创建一个工作目录.最好将它命名为,因为在未来的Go版本中默认为GOPATH(从Go 1.8开始).

pi@pi3-2:~ $ mkdir go
Run Code Online (Sandbox Code Playgroud)

IV.将$ GOPATH环境变量和修改后的PATH设置附加到.profile

pi@pi3-2:~ $ echo 'export GOPATH=$HOME/go' >> ~/.profile
pi@pi3-2:~ $ echo 'PATH="$HOME/go/bin:$PATH"' >> ~/.profile
Run Code Online (Sandbox Code Playgroud)

V.使用新设置注销和重新登录,然后检查您的设置

pi@pi3-2:~ $ go env

GOARCH="arm"
GOBIN=""
GOEXE=""
GOHOSTARCH="arm"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/pi/go"
GORACE=""
GOROOT="/usr/lib/go-1.7"
GOTOOLDIR="/usr/lib/go-1.7/pkg/tool/linux_arm"
CC="gcc"
GOGCCFLAGS="-fPIC -marm -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build187598155=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
Run Code Online (Sandbox Code Playgroud)

特别要确保GOPATH指向您之前创建的Go工作目录.如某些文档中所述,不关心设置GOBIN.通常没有必要,Go将自动使用$ GOPATH/bin /进行Go安装.

但是,您可能还需要检查路径设置(应包含/ home/pi/go/bin)以确保您可以运行go install时安装的代码.

pi@pi3-2:~ $ echo $PATH
/home/pi/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
Run Code Online (Sandbox Code Playgroud)

VI.关于Go工作目录结构的几句话

随着时间的推移,Go工作目录将包含三个子目录:bin,src和pkg.除了src,它们将在第一次需要时自动创建.用户pi的结构如下所示:

/home
  /pi
    /go
      /src
      /pkg
      /bin
Run Code Online (Sandbox Code Playgroud)

bin将包含使用go install命令安装的所有Go可执行文件.

pkg将包含可以导入项目的所有已编译包.

src将包含您自己的所有源文件或从外部存储库下载的源文件.

对于eksample,该命令go get github.com/petergloor/hello-go将自动获取并将源文件从相应的外部Github存储库放入本地目录$ HOME/go/src/github.com/petergloor/hello-go.

因为获取外部存储库以供参考或贡献是相当普遍的,所以保持目录结构始终井井有条和干净变得很重要.

除此之外,只要在$ HOME/go/src /目录下分层结构,您就可以自由组织项目,并遵循文档中提到的规则.

但是,为了清楚地组织我的项目,我个人总是把我的项目放到$ HOME/go/src/github.com/my-github-account中,即使我没有外部存储库.

如果您没有github帐户,则可以使用任何其他外部存储库帐户.

正如我所提到的,即使它根本不需要我优先使用我的Github帐户来清楚地识别我的项目.即使不需要,我也会使用用户名pi将用户与以下示例中的其他项目维护者区分开来.

七.所以让我们添加一个"hello world"项目来测试我们的安装.

a)首先让我们创建项目文件夹并cd进入其目录.

pi@pi3-2:~ $ mkdir -p $HOME/go/src/pi/helloworld
pi@pi3-2:~ $ cd $HOME/go/src/pi/helloworld
pi@pi3-2:~/go/src/pi/helloworld $
Run Code Online (Sandbox Code Playgroud)

b)使用您选择的编辑器创建一个文件main.go,其中包含以下内容

// helloworld project main.go.
package main

import ("fmt")

// main is the entrypoint of the application.
func main() {
  fmt.Println("Hello world! Greetings from Raspberry Pi")
}
Run Code Online (Sandbox Code Playgroud)

此时间距无关紧要.Go为您提供了一个很好的工具.

c)现在尝试运行该程序.

pi@pi3-2:~/go/src/pi/helloworld $ go run main.go
Hello world! Greetings from Raspberry Pi
pi@pi3-2:~/go/src/pi/helloworld $
Run Code Online (Sandbox Code Playgroud)

如果您收到错误,请修复它!仔细检查拼写和案例(Go是区分大小写的).

d)接下来让我们格式化代码:

pi@pi3-2:~/go/src/pi/helloworld $ go fmt
Run Code Online (Sandbox Code Playgroud)

如果没有文件名,这将正确(重新)格式化此目录及其下的所有源文件.

e)接下来让我们在这个目录中构建helloworld作为可执行的procram.

pi@pi3-2:~/go/src/pi/helloworld $ go build
pi@pi3-2:~/go/src/pi/helloworld $ ls
helloworld  main.go
pi@pi3-2:~/go/src/pi/helloworld $
Run Code Online (Sandbox Code Playgroud)

f)现在你可以运行它了.

pi@pi3-2:~/go/src/pi/helloworld $ ./helloworld
Hello world! Greetings from Raspberry Pi
pi@pi3-2:~/go/src/pi/helloworld $
Run Code Online (Sandbox Code Playgroud)

g)最后让我们将程序安装到$ HOME/go/bin /目录中.

pi@pi3-2:~/go/src/pi/helloworld $ go install
pi@pi3-2:~/go/src/pi/helloworld $ ls $HOME/go/bin
hello-go  helloworld
pi@pi3-2:~/go/src/pi/helloworld $
Run Code Online (Sandbox Code Playgroud)

h)如果一切正常,只需输入命令名称,我们的pi用户就可以从任何地方运行它.

pi@pi3-2:~/go/src/pi/helloworld $ helloworld
Hello world! Greetings from Raspberry Pi
pi@pi3-2:~/go/src/pi/helloworld $ cd ~
pi@pi3-2:~ $ helloworld
Hello world! Greetings from Raspberry Pi
pi@pi3-2:~ $
Run Code Online (Sandbox Code Playgroud)

恭喜!

  • 谢谢@Peter。我已经按照您精心编写的步骤操作,一切正常!这应该是公认的答案。 (2认同)