区块链开发笔记五:以太坊源码编译及环境搭建

环境前准备

Ubuntu16.04 64位系统或者CentOS7 64位系统
配置好gcc环境,不然编译go-ethereum源码出错。

yum -y install gcc gcc-c++ kernel-devel

查看已安装的gcc

gcc -v

选择好虚拟机网络模式

  1. net模式
    选择net模式要注意搭建的以太坊能否被外网访问的问题
    https://blog.csdn.net/qq_36651243/article/details/88872688
  2. 桥接模式
    选择桥接模式要注意配置好静态ip和解决上网问题
    https://blog.csdn.net/qq_36651243/article/details/88886226

go-ethereum源码,下载地址为:https://github.com/ethereum/go-ethereum

配置go环境

此处需要注意,因为go的版本会造成后面以太坊环境测试,因此此处提供可行的一个go版本(go1.11.2)。
1. 进入/usr/local目录

cd /usr/local

2. 安装go1.11.2版本

wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz

此处下载需要翻墙操作,如果下载不了,就在云盘下载后移到虚拟机中
链接:https://pan.baidu.com/s/1eDnWJ20rE-fh_4uh8XRqqA
提取码:qtoq
注意:如果你虚拟机默认系统目录下装了go环境,请先卸载。

apt-get purge golang-go

在这里插入图片描述
3. 解压go压缩包

tar zxvf go1.11.2.linux-amd64.tar.gz

4. 设置编译目录GOPATH

mkdir -p /home/gopath

5. 配置环境变量

vim /etc/profile

6. 在配置文件最后添加

export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=/home/gopath

7. 保存已配置的环境变量使其生效

source /etc/profile

8. 查看go的版本即可验证是否成功了
在这里插入图片描述

配置docker环境

Ubuntu环境

1. 安装docker.io

apt-get install docker.io

2. 安装docker-compose

apt-get install docker-compose

3. 查看docker版本

go version

在这里插入图片描述
4. 启动docker
确保允许当前用户首先操作Docker命令:

sudo usermod -a -G docker $USER

启动docker

service docker start

CentOS环境

1. 安装docker
安装一些必要的系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存

sudo yum makecache fast

查看docker版本

yum list docker-ce.x86_64 --showduplicates | sort -r

选择需要安装 Docker-ce版本

yum -y install docker-ce-18.09.0 docker-ce-cli-18.09.0

查看docker版本

docker version

在这里插入图片描述
2.安装docker-compose
下载docker-compose
(说明:版本号选择可以改download后的数字,目前我下载的是最新的版本1.23.2)

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

添加可执行权限

chmod +x /usr/local/bin/docker-compose

查看docker-compose版本

docker-compose version

在这里插入图片描述
3. 启动docker
确保允许当前用户首先操作Docker命令:

sudo usermod -a -G docker $USER

启动docker

service docker start

docker设置代理

1. 默认情况下这个配置文件夹并不存在,我们要创建它

mkdir -p /etc/systemd/system/docker.service.d

2. 创建一个文件 /etc/systemd/system/docker.service.d/http-proxy.conf
注意文件内容要包含 HTTP_PROXY 环境变量。

[Service]
Environment="HTTPS_PROXY=http://192.168. XXX.XXX:XXXX / HTTP_PROXY=http://192.168. XXX.XXX:XXXX /"

3. 刷新systemd配置

sudo systemctl daemon-reload

4. 用系统命令验证环境变量加上去没

systemctl show --property=Environment docker

5. 重启docker

sudo systemctl restart docker

编译go-ethereum

1. 将go-ethereum放进linux下,然后进去其目录

cd go-ethereum

2. 编译以太坊客户端工具

make all

3. 特别说明,如果出现以下编译错误
在这里插入图片描述
这个问题说明你的env.sh没有可执行权限,先用chmod对env.sh添加可执行权限

chmod +777 env.sh

5. 编译完成后,可在build/bin目录下看到编译好的工具文件
在这里插入图片描述
6. 配置环境变量
打开配置文件

vim /etc/profile

添加一下内容,注意ETH_HOME设置的是你编译以太坊后工具所在的目录。

export ETH_HOME=/home/nycko/shaw/go-ethereum/build
export PATH1=$PATH1:$ETH_HOME/bin

在这里插入图片描述
最后保存设置即可

source /etc/profile

如果搭建与测试的过程中遇到问题,请详阅更多资料。

更多详细介绍
https://download.csdn.net/download/qq_36651243/11068809

更多资料:
以太坊自动化部署
以太坊环境测试
go-ethereum编译
docker切换代理
docker启动问题
puppeth中私链绑定账户问题
以太坊中go版本问题
智能合约部署上链操作
ipfs私有网络搭建

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Libevent是一个事件驱动的网络编程框架,而event.h是其核心头文件之一。该头文件定义了事件处理相关的结构体、函数和宏等内容。 下面是event.h中常用的一些定义和函数: ### 1.事件回调函数 ```c typedef void (*event_callback_fn)(evutil_socket_t fd, short events, void *arg); ``` 该类型定义了事件回调函数的原型,其中fd是事件所在的文件描述符,events是事件类型,arg是用户传入的参数。 ### 2.事件结构体 ```c struct event { event_callback_fn ev_callback; // 事件回调函数 int ev_fd; // 事件所在的文件描述符 short ev_events; // 事件类型 short ev_res; // 事件结果 struct event_base *ev_base; // 事件所属的event_base void *ev_arg; // 用户传入的参数 }; ``` 该结构体表示一个事件,其中ev_callback是事件回调函数,ev_fd是事件所在的文件描述符,ev_events是事件类型,ev_res是事件结果,ev_base是事件所属的event_base,ev_arg是用户传入的参数。 ### 3.事件类型 ```c #define EV_TIMEOUT 0x01 #define EV_READ 0x02 #define EV_WRITE 0x04 #define EV_SIGNAL 0x08 #define EV_PERSIST 0x10 #define EV_ET 0x20 ``` 该宏定义了事件类型,分别为超时事件、读事件、写事件、信号事件、持续事件和边缘触发事件。 ### 4.事件处理函数 ```c struct event_base *event_base_new(void); int event_base_dispatch(struct event_base *base); int event_base_loopexit(struct event_base *base, const struct timeval *tv); void event_base_free(struct event_base *base); ``` 这些函数用于创建event_base、处理事件、退出事件循环和释放event_base等操作。 以上是event.h中的一些常用内容,更多细节可以查看源码和官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

离歌漠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值