linux – 在Raspbian上安装go(golang)

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

sudo apt-get install golang

我安装了去和

export GOPATH=$home/pi/gocode

我设置了GOPATH,所以我尝试从主页安装一个新程序(sudo go get -u github.com / ….)但是,我只得到“无法下载,$GOPATH未设置.有关详细信息,请参阅:去帮助gopath“.

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

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

解决方法:

这是有关如何从存储库安装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

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

pi@pi3-2:~ $mkdir go

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

pi@pi3-2:~ $echo 'export GOPATH=$HOME/go' >> ~/.profile
pi@pi3-2:~ $echo 'PATH="$HOME/go/bin:$PATH"' >> ~/.profile

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"

特别要确保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

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

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

/home
  /pi
    /go
      /src
      /pkg
      /bin

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 $

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")
}

此时间距无关紧要. 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 $

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

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

pi@pi3-2:~/go/src/pi/helloworld $go fmt

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

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 $

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

pi@pi3-2:~/go/src/pi/helloworld $./helloworld
Hello world! Greetings from Raspberry Pi
pi@pi3-2:~/go/src/pi/helloworld $

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 $

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:~ $

恭喜!

上一篇:使用C#在SQL Server上执行sql文件


下一篇:有没有办法找出使用哪个Linux发行版?