oflyhigh avatar

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

oflyhigh

Published: 16 Oct 2025 › Updated: 16 Oct 2025温故而知新:重新尝试编译 hived v1.27.11

温故而知新:重新尝试编译 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)

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

相关连接

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

Written by

Programmer, Maker, Freelancer, Witness. Make friends, Make money, Make life better!

Read more #cn posts


Best Posts From oflyhigh

We have not curated any of oflyhigh's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From oflyhigh