2018年2月27日星期二

记录一下go 安装相关的东西

我要参考的安装流程
http://blog.csdn.net/beyond__devil/article/details/68064202

我遇到的错误及解决方法:
1.如果你之前安装过go,那么再次安装前,你需要将安装的go卸载干净。

2.基于上述安装流程,笔者checkout到1.4.3版本,并运行./all.bash,出现以下错误

 runtime/cgo(.text): unexpected relocation type 298
runtime/cgo(.text): unexpected relocation type 298


解决方案:
在命令行输入:export CGO_ENABLED=0
问题解决,编译好的1.4.3在终端上打出的结果如下
 Installed Go for linux/amd64 in /home/xxx/go
Installed commands in /home/xxx/go/bin


3.查看github官网的版本,我将版本checkout到1.9.4版本,运行./all.bash,运行成功,结果如下:
##### API check
Go version is "go1.9.4", ignoring -next /home/xxx/go/api/next.txt

ALL TESTS PASSED

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

配置环境变量后,我以为已经成功了,但是当我使用go install进行编译时,出现以下错误:
($GOPATH not set. For more details see: 'go help gopath')




2018年2月26日星期一

bazel 系统学习笔记

立一个flag,15天内系统的学习一下bazel(2月27-3月14日)
1.Introduction介绍
bazel从有WORKSPACE文件的源代码目录构建软件。在一个workspace中的资源文件被组织成packages,一个package是一个包含相关资源文件和BUILD文件的目录,BUILD文件指定如何从资源中编译软件。

2. Workspace, Package and Targets
 2.1 workspace
 workspace指的是你想要构建的资源的软件目录,WORKSPACE可以空,也可以包含workspace rules.

 2.2 Package
workspace的基础单元就是package,一个package是一个包含相关资源文件和BUILD文件的目录,更直观的理解,他就是WORKSPACE下的第一级包,再下层就不是了。package的作用在于你可以指定它的可见性,如
package(default_visibility = ["//visibility:public"])

2.3 Targets
一个package就相当于一个容器,package里面的内容被称为targets。大多数targets都属于以下这两种类型: files或者rules。除此之外,还有一种类型的target,被称之为package group,但是它的数量很少。

files又被分为两种类型,source files(即资源文件)是由编程人员写的完成特定任务的文件,他们被提交到代码仓库。generated files,是由构建工具根据规则生成的特定文件。

rule指定输入文件和输出文件之间的关联,rule中的输出文件一定是generated 文件, rule中的输入文件可能是source或者generated文件。这很容易理解,因为规则的依赖项可能是已经构建好的规则的输出结果。

2.4  Labels
 所有的targets都属于一个唯一的package,target的名字被称为label,典型的label如下:
//my/app/main:app_binary
一个label由两部分组成,一个是package name(my/app/main),另一个是target name
(app_binary),每一个label唯一的指向一个targets,//代表从WORKSPACE所在目录开始
一种特殊情况(//my/app  和//my/app:app等价    :app 和 app等价)
 
 
3.Rules

rules规定输入和输出之间的关联,下面主要介绍针对Python的bazel rules

首先,每个rule都有一个name属性,你最好好好的定义它,使得下一个编码人员可以看懂你写的
意思。这一点在py_binary和py_test中尤为重要。每个规则都有自己对应的属性。
srcs: 属性表示所指定的label的列表,实际上就是要编译的资源文件的列表
outs:  表示输出label的列表, 他与srcs属性相似但有两个不同的地方,



leetcode 17

17.   Letter Combinations of a Phone Number Medium Given a string containing digits from   2-9   inclusive, return all possible l...