如何在 Unix 系统上构建 Bitcoin Core?

关于如何在 Unix 中构建 Bitcoin Core 的一些说明。
(对于 BSD 特定的说明,请参阅此目录中的 build-*bsd.md。)

构建

cmake -B build cmake --build build # 添加 "-j N" 以进行 N 个并行作业 cmake --install build # 可选
请参阅下面的说明,了解如何在流行的 Linux 发行版上,或完整的概述。

内存需求

C++ 编译器是内存密集型的。建议在编译 Bitcoin Core 时至少有 1.5 GB 的可用内存。在内存较少的系统上,可以调整 gcc 以使用额外的 CMAKE_CXX_FLAGS 来节省内存:
cmake -B build -DCMAKE_CXX_FLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768"
或者,可以跳过调试信息的编译。对于默认的构建类型 RelWithDebInfo,默认的编译标志是 -O2 -g,可以使用以下方式更改:
cmake -B build -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O2 -g0"
最后,可以使用 clang(通常资源消耗较少)代替默认使用的 gcc:
cmake -B build -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang

Linux 发行版特定说明

Ubuntu & Debian

依赖构建说明

构建要求:
sudo apt-get install build-essential cmake pkgconf python3
现在,你可以从自行编译的  构建,也可以安装所需的依赖项:
sudo apt-get install libevent-dev libboost-dev
描述符钱包需要 SQLite:
sudo apt install libsqlite3-dev
要构建不带钱包的 Bitcoin Core,请参阅
启用 ZMQ 的二进制文件使用 -DWITH_ZMQ=ON 编译,并且需要以下依赖项:
sudo apt-get install libzmq3-dev
用户空间,静态定义跟踪 (USDT) 依赖项:
sudo apt install systemtap-sdt-dev
启用 IPC 的二进制文件使用 -DENABLE_IPC=ON 编译,并且需要以下依赖项。如果不需要 IPC 功能,请跳过。
sudo apt-get install libcapnp-dev capnproto
GUI 依赖项:
Bitcoin Core 包含一个使用跨平台 Qt 框架构建的 GUI。要编译 GUI,我们需要安装 Qt 的必要部分,libqrencode 和传递 -DBUILD_GUI=ON。如果你不打算使用 GUI,请跳过。
sudo apt-get install qt6-base-dev qt6-tools-dev qt6-l10n-tools qt6-tools-dev-tools libgl-dev
对于 Qt 6.5 及更高版本,必须在运行时安装 libxcb-cursor0 软件包。
此外,为了支持现代桌面环境的 Wayland 协议:
sudo apt install qt6-wayland
除非显式禁用此功能,否则 GUI 将能够将地址编码为 QR 码。要安装 libqrencode,请运行:
sudo apt-get install libqrencode-dev
否则,如果你不需要 QR 编码支持,请使用 -DWITH_QRENCODE=OFF 选项禁用此功能,以便编译 GUI。

Fedora

依赖构建说明

构建要求:
sudo dnf install gcc-c++ cmake make python3
现在,你可以从自行编译的  构建,也可以安装所需的依赖项:
sudo dnf install libevent-devel boost-devel
描述符钱包需要 SQLite:
sudo dnf install sqlite-devel
要构建不带钱包的 Bitcoin Core,请参阅
启用 ZMQ 的二进制文件使用 -DWITH_ZMQ=ON 编译,并且需要以下依赖项:
sudo dnf install zeromq-devel
用户空间,静态定义跟踪 (USDT) 依赖项:
sudo dnf install systemtap-sdt-devel
启用 IPC 的二进制文件使用 -DENABLE_IPC=ON 编译,并且需要以下依赖项。如果不需要 IPC 功能,请跳过。
sudo dnf install capnproto
GUI 依赖项:
Bitcoin Core 包含一个使用跨平台 Qt 框架构建的 GUI。要编译 GUI,我们需要安装 Qt 的必要部分,libqrencode 和传递 -DBUILD_GUI=ON。如果你不打算使用 GUI,请跳过。
sudo dnf install qt6-qtbase-devel qt6-qttools-devel
对于 Qt 6.5 及更高版本,必须在运行时安装 xcb-util-cursor 软件包。
此外,为了支持现代桌面环境的 Wayland 协议:
sudo dnf install qt6-qtwayland
除非显式禁用此功能,否则 GUI 将能够将地址编码为 QR 码。要安装 libqrencode,请运行:
sudo dnf install qrencode-devel
否则,如果你不需要 QR 编码支持,请使用 -DWITH_QRENCODE=OFF 选项禁用此功能,以便编译 GUI。

依赖项

有关完整的概述,请参阅 ,以及  如何自行编译它们,如果你不想使用你的 Linux 发行版的软件包。

禁用钱包模式

当意图仅运行 P2P 节点而不使用钱包时,可以使用以下命令在禁用钱包模式下编译 Bitcoin Core:
cmake -B build -DENABLE_WALLET=OFF
在这种情况下,不依赖于 SQLite。
也可以在禁用钱包模式下使用 getblocktemplate RPC 调用进行挖矿。

其他配置标志

可以使用以下命令显示其他配置标志的列表:
cmake -B build -LH

设置和构建示例:Arch Linux

此示例列出了在 Arch Linux 上设置和构建最新更改的仅命令行发行版所需的步骤:
pacman --sync --needed cmake boost gcc git libevent make python sqlite git clone https://github.com/bitcoin/bitcoin.git cd bitcoin/ cmake -B build cmake --build build ctest --test-dir build ./build/bin/bitcoind ./build/bin/bitcoin help

标签:

上一篇:CZ专访:币某安USDC策略、监管挑战与身份争议
下一篇:如何用TypeScript构建一个安全的比特币钱包?