本文介绍在64位的Ubuntu16.04系统上编译以太坊go语言源码go-ethereum的过程。
go-ethereum主要是用go语言写的,很小一部分使用了C语言,因此编译go-ethereum源码需要go语言和C语言编译器,首先确保机器上有gcc编译器,并且正确安装了go语言 (安装教程),go语言版本推荐用go1.7及以上。
编译go-ethereum有两种方法,一种是使用make工具编译,另一种是使用go语言自己的编译工具编译。
使用make编译
首先下载go-ethereum源码:
$ git clone https://github.com/ethereum/go-ethereum.git
$ cd go-ethereum
$ git checkout v1.6.0
上面通过git clone
下载源码,然后通过git checkout
检出指定版本的代码,如果想使用其他版本,在git checkout
中指定相应的版本号即可。
接下来用make工具进行编译:
$ make geth
make会执行go-ethereum/build
目录下的编译脚本,编译脚本会调用go语言编译器进行编译。等待十几秒,编译就完成了,此时会在 go-ethereum/build/bin
中生成geth可执行文件。
输入 geth help
命令,会显示geth所有的命令和选项:
$ cd build/bin
$ ./geth help
使用go语言编译工具编译
如果熟悉go语言,可以直接使用go语言的编译工具编译。
首先在GOPATH/src
下创建github.com/ethereum
目录:
$ mkdir -p $GOPATH/src/github.com/ethereum
然后进入上面创建的目录,下载go-ethereum项目源码:
$ cd $GOPATH/src/github.com/ethereum
$ git clone https://github.com/ethereum/go-ethereum.git
$ cd go-ethereum
$ git checkout v1.6.0
下载完成后,通过以下命令编译:
$ go install -v github.com/ethereum/go-ethereum/cmd/geth
go install
命令会编译指定的源码,并在GOPATH/bin
目录下生成geth可执行文件。
编译完成后,输入 geth help
命令,会显示geth所有的命令和选项:
$ cd $GOPATH/bin
$ ./geth help
注:如果下载的是1.5.x版本的代码,编译出错的话,可能还要到golang中国下载golang.org.x.net.tar.gz
,并将其解压到GOPATH/src
中。解压之后的目录结构应该是这样的:
GOPATH/src
├── github.com
│ └── ethereum
│ └── go-ethereum
└── golang.org
└── x
└── net
之后再通过上面的go install
命令编译安装即可。