黑客马拉松
上周末参加了 Nervos 举办的一场黑客马拉松。我的 idea
主要是想结合区块链和 IOT
, 做的东西 其实很简单,就是在一块儿 arm
单板上跑一个客户端,能发转账交易。
IOT
与区块链
IOT
与区块链的结合,这个话题已经有很多文章了。
但是在我看来,其实就一点。如果设备直接连到区块链,可以将其收集到的数据直接上链,减少人工干预,一定程度上可以让数据更可信。
比如,溯源场景。之前一直被人诟病的一点就是,各个环节的数据还是人工录入上链的,那么就有可能数据自源头就是假的。如果由 IOT
设备直接上链,虽然不能完全杜绝,但是至少数据造假的成本大大增加了。
交叉编译的一些问题
当我们想让原本在 x86
上跑的程序跑在 arm
上时,我们就需要 交叉编译
。
目前 arm
生态已经非常成熟。比如使用华为云上的鲲鹏主机,感觉跟 x86
服务器的体验已经很接近了。
Rust
对 arm
的支持也已经做的很好了,只需要很少量的代码修改,就可以正常交叉编译。
遇到的问题主要有:
Rust
对glibc
版本的要求太高了。Rust
在编译的时候会尽量使用高版本glibc
里的函数,这就导致编译出来的可执行文件,无法在glibc
版本比较低的环境中运行。- 为了规避上述问题,尝试静态链接,即使用
Rust
的musl
版本的target
。这时遇到的问题是musl
提供的函数比glibc
要少。而很多依赖c
代码的包,比如各种-sys
的包,会使用这些缺失的函数。导致链接时报找不到函数的错误。比如rocksdb
跟musl
就是一对无解的组合。