VS2019编译BTC(比特币核心)实战指南,从环境搭建到成功构建

比特币核心(Bitcoin Core)作为比特币网络的原生客户端,其源码的编译与理解是深入探索区块链技术的重要一步,本文将详细介绍如何在 Windows 环境下,使用 Visual Studio 2019 (VS2019) 编译比特币核心源码,旨在为开发者提供一份清晰、可操作的实战指南。

准备工作:编译环境的 prerequisites

在开始编译之前,确保你的系统满足以下基本要求:

  1. 操作系统:推荐使用 64 位 Windows 10 或 Windows 11,32 位系统可能无法编译或运行成功。
  2. Visual Studio 2019:必须安装 Visual Studio 2019,建议从 Visual Studio 官网下载 "Community"(社区版,免费)或更高版本。
    • 关键组件:在安装 VS2019 时,务必确保选中以下工作负载和组件:
      • “使用 C++ 的桌面开发” 工作负载:这是核心,包含了 C++ 编译器、标准库、Windows SDK 等。
      • MSBuild:通常包含在上述工作负载中。
      • Windows 10 SDK (10.0.xxxxx.x):建议安装最新的 Windows 10 SDK,或至少是 10.0.17763.0 或更高版本。
      • C++ CMake 工具(可选,但推荐,现代项目构建工具)。
      • Git for Windows:用于从 GitHub 克隆比特币核心源码。
  3. Windows SDK:确保安装了与 Visual Studio 匹配的 Windows SDK,VS2019 通常默认包含。
  4. Git:从 Git for Windows 下载并安装,用于获取源码。
  5. CMake:从 CMake 官网 下载并安装 Windows x64 安装包,虽然比特币核心主要使用 autotools(通过 depends 脚本),但 CMake 在某些辅助工具或未来可能的迁移中可能会用到,提前安装无妨。
  6. Python:比特币核心的构建脚本需要 Python 3.6+,建议从 Python 官网 安装,并在安装时勾选 "Add Python to PATH"。
  7. 硬件要求
    • CPU:64 位 x86 处理器,多核 CPU 能显著加快编译速度。
    • 内存:推荐至少 8GB RAM,16GB 或以上更佳,因为编译过程非常消耗内存。
    • 硬盘空间:至少需要 20GB 以上的可用空间,用于源码、依赖库和编译产物。

获取比特币核心源码

使用 Git 克隆比特币核心的官方仓库:

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

克隆完成后,你可以选择切换到特定的标签(tag)来编译某个稳定版本,例如编译 v0.21.2 版本:

git checkout v0.21.2

编译依赖库(depends 脚本)

比特币核心依赖于许多第三方库,如 Boost、Berkeley DB (BDB)、Qt (如果需要 GUI)、MiniUPnPc 等,手动编译这些库繁琐且易出错,幸运的是,比特币项目提供了 depends 脚本来简化这一过程。

  1. 安装 MSYS2depends 脚本在 MSYS2 环境下运行,从 MSYS2 官网 下载并安装,安装完成后,打开 MSYS2 MINGW64 终端(
    随机配图
    或 MSYS2 UCRT64,根据你的选择和 VS2019 的兼容性,MINGW64 更常见)。
  2. 更新 MSYS2:在 MSYS2 终端中运行以下命令更新系统:
    pacman -Syu
    # 可能需要关闭终端重新打开,然后再次运行
    pacman -Su
  3. 安装依赖工具:在 MSYS2 MINGW64 终端中安装构建所需的工具:
    pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja
  4. 运行 depends 脚本
    • 回到你的比特币核心源码目录(C:\Users\YourUser\bitcoin)。
    • 打开 VS2019 x64 Native Tools Command Prompt(开始菜单中搜索,它已经配置好了必要的编译环境变量)。
    • 在 VS2019 x64 Native Tools Command Prompt 中,进入 depends 目录:
      cd depends
    • 执行构建脚本。win64 是目标平台,对应你的 VS2019 x64 配置:
      build-win64.sh

      或者如果你使用的是 PowerShell 或 CMD,MSYS2 的路径配置正确,也可以尝试:

      build-win64
    • 脚本会自动下载并编译所有必需的依赖库,这个过程可能需要较长时间(从几十分钟到几小时不等,取决于你的网络和硬件性能),耐心等待,直到看到 "Done!" 等成功提示。

配置与生成 Bitcoin Core 项目文件

依赖库编译完成后,我们需要为 VS2019 生成项目文件(.sln 和 .vcxproj),比特币核心使用 autotools,但为了方便在 Windows 下使用 MSVC 编译,我们可以利用 depends 脚本生成的环境,或者使用 CMake。

这里推荐使用 configure 脚本结合 MSVC 工具链:

  1. 确保环境正确:确保你仍在 VS2019 x64 Native Tools Command Prompt 中,并且当前目录在比特币核心的根目录(C:\Users\YourUser\bitcoin)。
  2. 运行 configure 脚本
    • 比特币核心提供了一个 autogen.sh 脚本来生成 configure 脚本(如果是从源码克隆,通常需要先运行,但某些预生成版本的仓库可能已经包含 configure)。
    • 运行 configure 脚本,指定 --prefixdepends\win64(这样生成的可文件会寻找依赖库的位置),并指定 --host=x86_64-w64-mingw32 如果使用 MinGW 工具链,但这里我们使用 MSVC,所以通常不需要 --host,而是依赖 depends 脚本设置的环境。
    • 更简单的方式是,depends 脚本在构建依赖时,可能会在 depends\win64\ 目录下生成一些配置好的脚本,我们可以利用 depends\win64\ 目录下的环境。
    • 另一种更直接的方式是,使用 depends\win64\msvc\build.bat 脚本(如果存在的话,具体请查看 depends 目录下的说明文件)。
    • depends 脚本成功运行后,你可以在比特币核心根目录下直接运行:
      ./autogen.sh (如果需要)
      ./configure --prefix=depends/win64 --disable-wallet-tool --disable-tests --disable-bench --without-gui (可选参数,根据需要开启或关闭功能)

      注意:--without-gui 会禁用 GUI(Qt)支持,编译速度更快,且不依赖 Qt,如果需要 GUI,则确保 depends 脚本编译了 Qt,并在 configure 时去掉 --without-gui

  3. 生成项目文件
    • configure 脚本会生成 Makefile 等文件,对于 VS2019,我们可以使用 msbuild 来直接编译,或者使用 CMake 生成项目文件。
    • 使用 MSBuildconfigure 生成了适合 MSBuild 的文件(通常需要特定的配置),可以直接运行:
      msbuild bitcoin.sln /p:Configuration=Release /p:Platform=x64

      但更常见的是使用 CMake。

    • 使用 CMake(推荐)
      • 创建一个用于构建的目录(build):
        mkdir build
        cd build
      • 运行 CMake,指定源码目录和生成器(Visual Studio 2019):
        cmake .. -G "Visual Studio 16 2019" -A x64
        • -G "Visual Studio 16 2019" 指定使用 VS2019。
        • -A x64 指定
本文由用户投稿上传,若侵权请提供版权资料并联系删除!