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就编译好了。你可以把它放到树莓派里运行了。