VS2019编译BTC(比特币核心)实战指南,从环境搭建到成功构建
作者:admin
分类:默认分类
阅读:2 W
评论:99+
比特币核心(Bitcoin Core)作为比特币网络的原生客户端,其源码的编译与理解是深入探索区块链技术的重要一步,本文将详细介绍如何在 Windows 环境下,使用 Visual Studio 2019 (VS2019) 编译比特币核心源码,旨在为开发者提供一份清晰、可操作的实战指南。
准备工作:编译环境的 prerequisites
在开始编译之前,确保你的系统满足以下基本要求:
- 操作系统:推荐使用 64 位 Windows 10 或 Windows 11,32 位系统可能无法编译或运行成功。
- 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 克隆比特币核心源码。
- Windows SDK:确保安装了与 Visual Studio 匹配的 Windows SDK,VS2019 通常默认包含。
- Git:从 Git for Windows 下载并安装,用于获取源码。
- CMake:从 CMake 官网 下载并安装 Windows x64 安装包,虽然比特币核心主要使用
autotools(通过 depends 脚本),但 CMake 在某些辅助工具或未来可能的迁移中可能会用到,提前安装无妨。
- Python:比特币核心的构建脚本需要 Python 3.6+,建议从 Python 官网 安装,并在安装时勾选 "Add Python to PATH"。
- 硬件要求:
- 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 脚本来简化这一过程。
- 安装 MSYS2:
depends 脚本在 MSYS2 环境下运行,从 MSYS2 官网 下载并安装,安装完成后,打开 MSYS2 MINGW64 终端(或 MSYS2 UCRT64,根据你的选择和 VS2019 的兼容性,MINGW64 更常见)。
- 更新 MSYS2:在 MSYS2 终端中运行以下命令更新系统:
pacman -Syu
# 可能需要关闭终端重新打开,然后再次运行
pacman -Su
- 安装依赖工具:在 MSYS2 MINGW64 终端中安装构建所需的工具:
pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja
- 运行 depends 脚本:
配置与生成 Bitcoin Core 项目文件
依赖库编译完成后,我们需要为 VS2019 生成项目文件(.sln 和 .vcxproj),比特币核心使用 autotools,但为了方便在 Windows 下使用 MSVC 编译,我们可以利用 depends 脚本生成的环境,或者使用 CMake。
这里推荐使用 configure 脚本结合 MSVC 工具链:
- 确保环境正确:确保你仍在 VS2019 x64 Native Tools Command Prompt 中,并且当前目录在比特币核心的根目录(
C:\Users\YourUser\bitcoin)。
- 运行 configure 脚本:
- 比特币核心提供了一个
autogen.sh 脚本来生成 configure 脚本(如果是从源码克隆,通常需要先运行,但某些预生成版本的仓库可能已经包含 configure)。
- 运行
configure 脚本,指定 --prefix 为 depends\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。
- 生成项目文件: