Linux 系统下源码编译 Bitcoin Core 全流程指南

·

本文将手把手演示如何在 Debian/Ubuntu 系 Linux 中,使用官方源代码从零构建 Bitcoin Core 完整节点客户端。阅读完你不仅能获得一份易于复现的脚本,还能深入理解编译参数、各依赖关系以及后期维护要点。


为何要自己编译 Bitcoin Core?

👉 想进一步查阅各版本差异?点此看速览比较


准备阶段:升级并安装系统依赖

进入终端,先更新系统与软件索引,然后开始一次性安装所有必需构建依赖:

sudo apt update && sudo apt upgrade -y
sudo apt-get install -y \
  build-essential libtool autotools-dev automake pkg-config bsdmainutils \
  python3 libssl-dev libevent-dev libboost-system-dev libboost-filesystem-dev \
  libboost-chrono-dev libboost-test-dev libboost-thread-dev libminiupnpc-dev \
  libzmq3-dev libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools \
  libprotobuf-dev protobuf-compiler git libsqlite3-dev ccache

以上包体量约 500 MB,耐心等待即可。


检出 Bitcoin Core 源码

官方仓库托管在 GitHub,可直接克隆:

git clone https://github.com/bitcoin/bitcoin.git
cd bitcoin

此时目录下已存在完整源代码,HEAD 指向最新提交(master 分支),若想使用稳定版本,后续通过 git checkout 即可。


Berke​ley DB 库处理

旧链数据默认采用 BDB 4.8。安装脚本位于 contrib

./contrib/install_db4.sh "$(pwd)"

执行完后会提示安装路径:db4 位于仓库根。为了后续 configure 能正确识别,设置环境变量:

export BDB_PREFIX="$(pwd)/db4"

选择稳定分支并开始配置

首先查看官方所有稳定标签:

git tag | sort -V

比特币源码编译标准操作为选取一个 LTS 版本,如 v25.0

git checkout v25.0

随后生成构建脚本并配置:

./autogen.sh
./configure \
    BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" \
    BDB_CFLAGS="-I${BDB_PREFIX}/include" \
    --with-gui=no        # 若仅需命令行,可关闭 Qt

成功后会看到类似提示:

wallet support ............. yes
upnp ....................... yes

👉 排查 configure 报错更快的方式?看这份总结清单


开始并行编译

利用全部 CPU 核心可显著压缩编译耗时,32 核机器通常在 3 分钟内完成:

make -j"$(($(nproc)+1))"

官方 Wiki 建议:多核心系统务必开启 ccache 以复用中间文件,减少后续编译时间 60%~80%。


单元测试与功能验证

构建完成后立即执行回归测试,确保本地环境与预期一致:

make check -j"$(($(nproc)+1))"

进一步运行全扩展功能测试:

test/functional/test_runner.py --extended

提示:若部分测试因端口占用而失败,可用 ./test_runner.py --p2pport=18444+3 手动移开冲突端口。


安装二进制并全局调用

仅当前终端运行守护进程:

src/bitcoind -daemon

若想系统级安装:

sudo make install

完成后任何位置都可执行:

bitcoind -version
bitcoin-cli getblockchaininfo

常见疑问与解答(FAQ)

Q1:编译提示缺少 boost-system,明明已安装?
A:多数情况下是由于未安装 libboost-system-dev 命名正确依旧报错时,执行 sudo ldconfig 让动态库缓存重新生成即可。

Q2:我想启用 GUI,但显示 Qt 版本不兼容。
A:Ubuntu 22.04 推荐使用 Qt5.15;若系统版本偏低,使用官方提供的 depends 目录脚本 ./depends/packages/qt.mk 以静态方式构建 Qt,可避免系统库冲突。

Q3:编译后的二进制太大,能否缩小体积?
A:在 configure 末尾附加 --enable-upnp-default=no --disable-wallet --disable-zmq --disable-tests,可剔除不常用模块;并用 strip bitcoind 去除符号,体积可降至约 2/3。

Q4:想验证官方哈希怎么办?
A:于 git checkout 后,执行 git verify-tag v25.0 使用维护者 GPG 公钥校验;同时下载官方发布的 SHA256SUMS.asc 文件与本地构建结果比对。

Q5:如何为不同架构打包?
A:使用 Docker 或 LXC 容器,构建与发布平台一致的交叉编译链,例如 arm-linux-gnueabihf-g++,并改用 ./configure --host=arm-linux-gnueabihf


后续维护与升级


至此,你已亲手完成 Bitcoin Core 源码编译,拥有了完全由自己构建的可信节点。祝你验证区块、运行闪电网络、甚至开发 L2 项目一路畅通!