基本配置

从零开始:在 Windows 系统下编译与配置 Bitcoin Core 源码完整指南


对于任何希望深入理解比特币网络核心机制的开发者或技术爱好者来说,亲手编译 Bitcoin Core 源码是不可或缺的一步,这不仅能让你熟悉比特币的内部架构,还能为你后续进行二次开发、节点维护或协议研究打下坚实的基础,本文将为您提供一份详尽的、在 Windows 操作系统下从零开始编译和配置 Bitcoin Core 源码的保姆级教程。

准备工作:搭建编译环境

在开始之前,我们需要准备好所有必要的工具和依赖库,Bitcoin Core 是一个 C++ 项目,并且依赖于一些特定的库,如 Boost、Berkeley DB (BDB) 等。

安装 Visual Studio

Bitcoin Core 主要使用 C++ 进行开发,因此我们需要一个强大的 C++ 编译器,Visual Studio 是 Windows 平台下的首选。

  • 随机配图
ong>下载: 前往 Visual Studio 官网 (https://visualstudio.microsoft.com/)。
  • 安装: 下载 “Community” (社区版) 即可,它是免费的,在安装程序中,请务必勾选以下 “工作负载” (Workloads)
    • 使用 C++ 的桌面开发:这会自动安装 C++ 编译器、Windows SDK 和相关的工具链。
    • (可选).NET 桌面开发:如果你也打算研究 C# 相关的工具,可以一并勾选。
  • 安装过程可能需要一些时间,请耐心等待。

    安装 CMake

    CMake 是一个跨平台的自动化构建系统,Bitcoin Core 使用它来管理项目的编译过程。

    • 下载: 前往 CMake 官网 (https://cmake.org/download/)。
    • 安装: 下载 Windows x64 Installer 并运行,安装过程非常简单,一路点击 “Next” 即可,确保将 CAdd 到系统的 PATH 环境变量中。

    安装 Git

    Bitcoin Core 的源码托管在 GitHub 上,我们需要使用 Git 来克隆代码库。

    • 下载: 前往 Git for Windows 官网 (https://git-scm.com/download/win)。
    • 安装: 下载并运行安装程序,大部分选项保持默认即可,但在 “Adjusting the PATH environment” 步骤,建议选择 “Use Git and optional Unix tools from the COMMAND PROMPT”,这样可以在命令行中直接使用 git 命令。

    安备依赖库

    Bitcoin Core 依赖于几个第三方库,最关键的是 BoostBerkeley DB (BDB)

    • Boost 库:

      • 下载: 前往 Boost 官网 (https://www.boost.org/),进入 “Download” 部分,下载最新的 Windows 版本(boost_1_83_0.zip)。
      • 安装: Boost 不需要传统的安装,只需下载后,将其解压到一个固定的路径,C:\boost
    • Berkeley DB (BDB) 库:

      • 注意: 从 Bitcoin Core 0.21 版本开始,官方推荐使用 sqlite 作为默认的 wallet 后端,但 BDB 仍然被支持,为了兼容性,我们这里安装 BDB。
      • 下载: 你可以从 Oracle 官网或一些镜像站点下载 BDB,一个可靠的来源是 GitHub 的 bitcoin-core/bdb 仓库,里面提供了预编译好的 Windows 版本,下载 db-4.8.30.NC.zip 或更高版本。
      • 安装: 解压下载的压缩包,并将其中的 includelib 文件夹复制到一个固定的路径,C:\bdb,确保 lib 文件夹下有 vc140 (或对应你 VS 版本的) 文件夹,里面包含编译好的 .lib 文件。

    配置环境变量

    为了让编译器能找到这些库,我们需要设置几个环境变量。

    • 右键点击 “此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
    • 在 “系统变量” 部分,点击 “新建”:
      • 变量名: BOOST_ROOT
      • 变量值: C:\boost (你解压 Boost 的路径)
      • 变量名: BDB_ROOT
      • 变量值: C:\bdb (你解压 BDB 的路径)
    • 编辑 Path 变量,确保它包含了 Visual Studio 的工具链路径,VS 安装时会自动添加,如果没有,可以添加类似 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\Hostx64\x64 这样的路径(根据你的实际安装路径调整)。

    获取并编译 Bitcoin Core 源码

    环境准备就绪,现在可以开始获取代码并进行编译了。

    克隆源码仓库

    打开一个 “开发者命令提示符 for VS2022” (Developer Command Prompt for VS2022) 或类似的终端,这个终端会自动配置好所有必要的编译环境变量。

    在终端中执行以下命令,克隆 Bitcoin Core 的官方仓库:

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

    创建编译目录

    为了保持源码目录的干净,我们通常在源码目录外创建一个独立的编译目录。

    mkdir build
    cd build

    运行 CMake 配置

    这是最关键的一步,CMake 会根据你的环境生成适用于 Visual Studio 的项目文件。

    cmake -G "Visual Studio 17 2022" -A x64 -DBUILD_TESTS=OFF -DBUILD_FUZZ=OFF -DWITH_GUI=OFF ..
    • -G "Visual Studio 17 2022":指定生成 Visual Studio 2022 的项目文件,如果你使用的是 VS 2019,则使用 "Visual Studio 16 2019"
    • -A x64:指定生成 64 位的项目,强烈推荐使用 64 位编译。
    • -DBUILD_TESTS=OFF:不编译单元测试,可以大幅缩短编译时间。
    • -DBUILD_FUZZ=OFF:不编译模糊测试相关代码。
    • -DWITH_GUI=OFF:不编译图形界面(Qt),编译速度更快,如果你想编译 GUI,请确保已安装 Qt 并将其路径添加到环境变量中。

    如果一切顺利,CMake 会成功生成项目文件,并提示你使用 cmake --build . 来编译。

    开始编译

    在同一个终端中,执行以下命令开始编译过程:

    cmake --build . --config Release
    • --build .:指定在当前目录编译。
    • --config Release:指定编译 Release 版本,这是性能最优的版本。

    编译过程非常耗时,根据你的电脑性能,可能需要几个小时,请保持耐心,确保电脑电源稳定,编译完成后,你可以在 build\src\Release 目录下找到编译好的核心文件,bitcoind.exe(节点守护进程)和 bitcoin-cli.exe(命令行客户端)。

    配置与运行你的比特币节点

    编译完成后,你就可以开始运行自己的全节点了。

    创建配置文件

    在 Bitcoin Core 的源码根目录(C:\bitcoin)下,创建一个名为 bitcoin.conf 的文件,这个文件用于节点的配置。

    一个简单的 bitcoin.conf 示例:

    rpcuser=myuser    # RPC 用户名,自定义
    rpcpassword=mypassword # RPC 密码,自定义,请务必设置强密码
    server=1         # 允许 RPC 调用
    txindex=1        # 建立交易索引,方便查询历史交易
    daemon=1         # 作为守护进程在后台运行
    # 可选:连接到一个已知的种子节点,以加速初始同步
    # 主网:addnode=bitcoin.seed.bitcoin.jonasschnelli.ch
    # 测试网:addnode=testnet-seed.bitcoin.jonasschnelli.ch

    首次同步

    打开一个新的 “命令提示符” 或 “PowerShell” 窗口(注意,不是之前的开发者命令提示符),切换到 build\src\Release 目录,然后启动节点:

    cd C:\bitcoin\build\src\Release
    .\bitcoind.exe

    首次启动时,节点会开始下载并验证整个区块链(目前已有数百 GB),这个过程可能需要几天甚至几周的时间,具体取决于你的网络带宽和硬盘

    本文由用户投稿上传,若侵权请提供版权资料并联系删除!

    上一篇:

    下一篇: