比特币核心(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 克隆比特币核心源码。
- 关键组件:在安装 VS2019 时,务必确保选中以下工作负载和组件:
- 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 (如果

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 脚本:
- 回到你的比特币核心源码目录(
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 工具链:
- 确保环境正确:确保你仍在 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。
- 比特币核心提供了一个
- 生成项目文件:
configure脚本会生成Makefile等文件,对于 VS2019,我们可以使用msbuild来直接编译,或者使用 CMake 生成项目文件。- 使用 MSBuild:
configure生成了适合 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指定
- 创建一个用于构建的目录(
本文转载自互联网,具体来源未知,或在文章中已说明来源,若有权利人发现,请联系我们更正。本站尊重原创,转载文章仅为传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如其他媒体、网站或个人从本网站转载使用,请保留本站注明的文章来源,并自负版权等法律责任。如有关于文章内容的疑问或投诉,请及时联系我们。我们转载此文的目的在于传递更多信息,同时也希望找到原作者,感谢各位读者的支持!