60

TrueChain搭建开发环境我趟过的坑

 5 years ago
source link: http://www.cocoachina.com/blockchain/20180918/24902.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本环境为:Go + VS Code

此篇为Windows环境篇,跨语言学习转GO语言开发,由于刚刚接触,在环境搭建的过程中就遇到了很多问题。网上有很多资料,大体思路能看明白,但是很多都没有很非常完整且详细的描述其中细节,导致过程中踩了不少坑,单独写下这篇经验,旨在介绍跳坑的方法,对于一些很基础的步骤请参考网上资料,基本大同小异。

环境变量设置很关键,这一步没有解决好,接下来的步骤都会造成很大的影响,再一个Go插件包安装失败也是个问题,也是个问题。

下载

我们此次切入的TrueChain区块链项目开发,go语言跨平台做的非常好,此项目goland语言版本需要在1.7+以上,我用的最新的 go version go1.10.3 windows/amd64

下载地址: https:// golang.org/dl/ ,需要搭梯子

注意:不能下载安装包的朋友需要另行搜索下载,网上很多帖子都有镜像下载,这里就不重复整理了。

安装

版本选择,go语言官方提供32位和64位的版本,不过基本都会选择64位的版本。

安装方式,安装包分为压缩版和安装版,区别在于安装版会自动配置环境变量, 坑就在这里了,自动配置环境变量,缺失了对go语言基本项目结构的理解,容易掉坑里面。 所以推荐压缩版本进行安装,或者msi版本安装之后重新配置环境变量。

默认会安装在 C:Go目录下,手动安装可以安装到此目录下,Go目录下有bin、src、doc等子目录,检查程序安装,接下来进行环境变量配置。

环境变量

打开环境变量设置面板,打开路径:(右击)我的电脑 - 属性 - 高级系统设置 - 环境变量,打开环境设置面板,我们直接设置系统变量,全局用户控制,可以根据用户设置环境变量(不推荐)。需要设计的环境变量有好几个,如下:

bmYbMnZ.jpg!web

新增 GOROOT ,go语言的程序安装目录,前面已经安装到了  C:Go 目录,这里直接配置 C:Go 目录。

修改PATH变量,在末尾追加一条 %GOROOT%in ,这样子cmd命令go就可以使用了,打开cmd命令,执行 go version 命令,能输出版本信息,即安装成功。

注意:安装包安装会出现GOBIN环境变量,删除它,PATH变量 %GOROOT%in ,已经实现了GOBIN环境设置,这里会出现坑,可能会出现如下报错。

go get:cannot install cross-compiled binaries when GOBIN is set

环境变量:设置工作目录

go语言需要在环境变量中设置工作目录,工作目录就是存放代码的地方,这个目录需要配置环境变量中,变量名称须设置为 GOPATH ,变量路径值可以设置你任意的工作目录, 需要特别注意的是,go语言代码需要都放在这个工作目录下 ,Window系统不推荐放在系统盘。

新建 GOPATH ,我的go项目工作目录设置为 E:go_projects ,你可以更改为你自己的工作目录,这时候,你需要在设置的工作目录中创建如下文件夹。

.
├── bin
├── pkg
└── src

修改PATH变量,我们把工作目录中的bin目录添加进PATH中,追加 %GOPATH%/bin 记录,跟前面配置 %GOROOT%in 是一样的,这样我们就可以直接在工作目录中使用go开发程序了。

bin ,文件夹存放 go install 命名生成的可执行文件

pkg ,文件夹是存在go编译生成的文件。

src ,存放的是我们的go源代码,不同工程项目的代码以包名区分,一般已域名区分,这样子就不会重复,那对于我们一些新开发的项目有没有域名,这时候怎么办?推荐的方式是 %GOPATH%/src/github.com/你的账户名/项目名 ,在GitHub你的账户是唯一的,这样就保证了项目

Go从1.1版本到1.7必须设置这个变量,而且不能和Go的安装目录一样。

这个目录用来存放Go源码,Go的可运行文件,以及相应的编译之后的包文件。

所以这个目录下面有三个子目录:src、bin、pkg

从go 1.8开始,GOPATH环境变量现在有一个默认值,如果它没有被设置。 它在Unix上默认为$HOME/go,在Windows上默认为%USERPROFILE%/go。

项目搭建

我们实战的是TrueChian,初链项目是基于水果链论文的工程实现,已这个项目切入区块链的开发。

TrueChain项目搭建,这里推荐我们社区开发小伙伴准备的另外一篇文章。

https:// github.com/truechain/wi ki/blob/master/developer/2.window_env_build.md

项目搭建,在此文中已经有比较详细的描述。

包安装的坑

这里聊一聊这里可能会面临的坑,IDE方面如果VS Code,需要安装go语言的开发扩展包,go项目会依赖一些项目包(插件),如果你已经解决这个问题请忽略以下内容。

VSCode设置

你更改了GOPATH环境变量之后,VSCode如果是在更改之前进行安装的话,这里面又会存在IDE环境变量设置问题

nMjEzef.jpg!web

你需要更改这里的go-gopath设置以及go-goroot,更改之后如下:

  "go.goroot": "C:\Go",
  "go.gopath": "E:\go_projects",

安装go插件工具包

http:// github.com 目录下的goland目录中安装工具包, %GOPATH%srchttp://github.comgolang

git clone https://github.com/golang/tools.git tools

git克隆完成还会在golang目录中多了一个tools目录,里面包含了很多go插件汇总。

这时候,我们需要把tools目录的文件全部拷贝到 %GOPATH%srchttp://golang.orgx ools 目录中

为什么tools插件包需要放置两个路径目录中?

toolscmd中包含了很多的插件,这些插件的归属域名并不是都在 http:// github.com 域名下,有些插件在 http:// golang.org 域名下。

下载tools,进行本地安装,在VS Code执行 install all 安装之后,会提示哪些有些包安装失败,有部分成功(如果全部都失败了,那可能需要检测下环境变量了) 。

go install github.com/ramya-rao-a/go-outlinego install github.com/acroca/go-symbolsgo install github.com/cweill/gotests/gotests

检查包是否安装成功

%GOPATH%in 目录下检查是否安装有正确的包,如下图:

2yqYVnm.jpg!web

跑起来,还是报错

BJNNfyf.jpg!web 抱歉,还是报错!

项目初始化 -->运行

修改launch.json进行初始化,还有有错误,如下图:

nEJZjeY.jpg!web

这个错误需要删除缓存数据,

C:Users你的用户名AppDataRoamingEthereum

Ethereum:这个是对应的项目目录,如果clone不是这个版本,对应的目录名称是不一样的,删除即可

最后,按照配置运行起来

ZbIbieY.jpg!web 运行成功,挖矿啦~~~

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK