为树莓派zero编译SDAG的命令行钱包

237 阅读1分钟

SDAG是使用Rust开发的区块链基础设施。因此想要编译SDAG,必须安装Rust。 首先安装Rust:

curl https://mirrors.ustc.edu.cn/rust-static/rustup/rustup-init.sh | sh

然后设置环境变量:

source $HOME/.cargo/env
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
source /etc/profile

这时可以克隆SDA项目:

git clone https://github.com/smart-dag/sdag.git

进入sdag目录,查看目录结构:

cd sdag
tree -d

这个时候可以看到目录结构如下:

├── benches
├── hub
│   └── src
├── object_base
│   └── src
├── sdg
│   └── src
├── src
│   ├── business
│   ├── cache
│   ├── kv_store
│   ├── network
│   └── utils
├── test_case
│   └── src
├── wallet_base
│   ├── src
│   └── tests
└── witness
    └── src

整个目录是一个lib,这个目录无需编译。目录下面,分别有hub、sdg和witness。

witness是SDAG的公证人,在SDAG区块链中,起到发公证单元的作用。 hub是SDAG的全节点,轻钱包需要连接hub节点,才能使用。 sdg是SDAG的命令行轻钱包。

我们需要对hub、sdg和witness分别编译。

今天只讲如何编译sdg。sdg是SDAG的命令行钱包,我们要把sdg编译成ARMv6版本的,能用于raspberrypi zero这块单板计算机上。

在Ubuntu上,先安装armv6的gcc:

sudo apt install gcc-arm-linux-gnueabihf

增加 rustup 对rustup target add arm-unknown-linux-gnueabihf的支持:

rustup target add arm-unknown-linux-gnueabihf

使用最新的工具链

rustup toolchain install nightly

编辑cargo的配置文件:

nano ~/.cargo/config

增加如下内容:

[target.arm-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"

进入sdg目录,进行交叉编译:

cd sdg
cargo build --target arm-unknown-linux-gnueabihf --release

这个时候你只要去买一杯咖啡就好,一会儿功夫,sdg就编译好了。你可以把它放到树莓派里运行了。