温故而知新:重新尝试编译 hived v1.27.11

前些天,我在家里的机器上重新尝试编译了一下hived的v1.27.11版本。为什么要去编译而不是使用别人编译好的现成版本?这当然是为了保持手熟。

image.png
(图源 :pixabay)

而且自己编译除了费劲一些以外,有很多优点:比如通过编译去了解最近有哪些主要变化;又比如在硬分叉或者紧急更新节点的时候自己编译会快人一步;还有就是当我们尝试做些修改(比如直接读取一些数据时)就可以自己编译带需要功能的版本。等等等等,就不一一赘述了。

说起来,以前我曾经在Amazon搞了个CPU超快、内存超大的机器来专门用来编译各种程序,当然价格也超贵,编译起来超快超爽。

早在一年多以前,我就无力负担这样昂贵的机器啦,所以距离上次编译v1.27.6也足足过了一年有余,我甚至都要忘记编译需要咋弄了。

既然无力支持昂贵的Amazon实例,那就只好在本地机器上搞了!其实我本地机器也是超级强悍的,但是有个问题——git 获取各种软件的仓库那叫一个慢呀。

你看,我这抓取速率只有257.00 KiB/s,也不知何时是个头!
c0c2494e9c72362b9535549321a7f9d8.png

若是这个速率稳定还好,实际上它可能卡这半天,所以要想能让其正常工作,就必须采取一点措施。

我采取的方法是在一台香蕉派(类似树莓派的卡片机)上运行一个socks5代理(SSH转发),然后在我的工作环境下执行如下指令:

export http_proxy=socks5://ip:port
export https_proxy=$http_proxy

这样,我在当前工作环境下的HTTP以及HTTPS流量都会通过代理啦,速度和稳定性大幅提升。这是使用代理后的速度:
cf9124a6b93a3ace85cf284254605206.png

足足提升了六倍有余,而是超稳定,终于可以愉快地搞事情啦。

之后原本以为会一切正常,结果竟然出现如下错误
17c20e19849d9350d1fdaf06f94f0ad0.png

额,好吧,虽然我管这台大机器叫开发机,但是之前一些编译工作都是在Amazon超贵的EC2实例上弄的,还真没在这个机器上装cmake,那就装呗。

sudo apt install cmake

搞定一个错误,结果一波未平一波又起,又出新错误啦:

417214d66d5c48e53d3e47a6ecef9228.png

咦,这个貌似以前遇到过,io_uring 是 Linux 内核引入的一种 高性能异步 I/O机制。

不过貌似hived的代码中并没有用到io_uring (可能rocksdb代码中用到了),不研究了,直接干:

sudo apt install liburing-dev

然后用来新错误啦,Boost找不到啦(系统里 Boost 库没有安装,或者版本 低于 1.74)
642702feee63b9a947fad95d765a6bf3.png

Boost 是一个 C++ 的开源库集合,HIVE的代码中没少用到,我以前编译时也没少折腾(比如手工编译指定版本啥的),不过在Ubuntu 22.04 LTS没那么麻烦,直接安装就好:

sudo apt install libboost-all-dev

然后又来新错误啦, CMake 在配置时找不到 BZip2 库及头文件:
9f4a405aa7d46841fb4c04fc32c042ac.png

这个看名字就是压缩用的,不研究了,直接干:

sudo apt install libbz2-dev

然后,不出意料地又出错了:
fd781c152ca7b15d476723148f371caf.png

没太搞明白这个有啥用以及咋用,不过还是直接安装吧:

sudo apt install python3-jinja2

但之后还出同样的错误,后来我才注意到我在Python虚拟环境中执行相应的操作呢,退出虚拟环境就好啦:

deactivate

之后又来新错误啦:
812df7cc3768aac35be59e52fdb58384.png

这是由于generate_words.sh 使用 Google 的 zopfli 压缩工具,其中有如下语句:

zopfli -c --deflate -i1000 "${INPUT_FILE}" > "${DEFLATE_FILE}"

所以,还是安装就行啦

sudo apt install zopfli

之后就可以愉快地进行编译了,并且我成功地编译出了hived_v1.27.11以及相应的命令行钱包,压缩工具等等。

其实,在hive代码中setup_ubuntu.sh中就包含了项目所用到的所有开发工具安装代码:
0786dd3f345be09460ba67924d57e447.png

matrix-2953869_960_720.jpg
(图源 :pixabay)

至于为啥没用相关脚本直接安装,一方面是感兴趣本机还缺了些啥,以及这些东西都是干啥用的;另外一方面当然是折腾喽,毕竟生命在于折腾呀。

相关连接

Sort:  

不明觉厉 膜拜O哥啊 哈哈~

哈哈,和真正的技术大佬们差得远呢

太厉害了👍🏻👍🏻

过奖过奖了

虽然不懂,但是膜拜大佬的心情与日俱增!👍👍👍

哈哈,算不得大佬

生命在于折腾,o哥真有活力啊

要累晕了

我已经把代码还给老师了,哈哈,大学的时候,我做网页还是可以,美工部分老师给我满分的!有次做编程我做的最快的,那时候记忆力也很好!

哈哈,捡起来

以前也学过C++和C语言,不过是半点记不起来了

再学一遍

O哥好有耐心,虽然不懂,但技术大佬好厉害

和真正的技术大佬们差得远呢

哇哦,O哥厉害👍

菜鸟菜鸟,就是菜鸟啦