比特币 - Depends 构建

  • bitcoin
  • 发布于 2025-06-12 21:24
  • 阅读 17

该文档介绍了如何使用 Depends build 系统构建和缓存 Bitcoin Core 的依赖项,支持交叉编译。文档提供了在 Ubuntu、Debian、macOS、FreeBSD, NetBSD, OpenBSD 等系统上的使用方法,以及如何配置 Bitcoin Core 以使用 Depends build 的输出,以及交叉编译的配置和常用参数。

Depends 构建

这是一个构建和缓存构建 Bitcoin Core 所需依赖项的系统。它支持交叉编译。更多详情请参见 description.md,以及 packages.md 以了解如何添加包。

用法

Ubuntu & Debian

apt install cmake curl make patch

如果你不打算使用 GUI 并且将使用 NO_QT=1 进行构建,请跳过以下软件包:

apt install bison g++ ninja-build pkgconf python3 xz-utils

要为当前的 arch+OS 构建依赖项:

make

macOS

安装 Xcode 命令行工具和 Homebrew 包管理器,请参见 build-osx.md

brew install cmake make ninja

要为当前的 arch+OS 构建依赖项:

gmake

FreeBSD

pkg install bash cmake curl gmake

如果你不打算使用 GUI 并且将使用 NO_QT=1 进行构建,请跳过以下软件包:

pkg install bison ninja pkgconf python3

要为当前的 arch+OS 构建依赖项:

gmake

NetBSD

pkgin install bash cmake curl gmake perl

要为当前的 arch+OS 构建依赖项:

gmake

OpenBSD

pkg_add bash cmake curl gmake gtar

要为当前的 arch+OS 构建依赖项:

gmake

配置 Bitcoin Core

在配置 Bitcoin Core 时,CMake 默认会忽略 depends 的输出。 为了让它从 depends 构建中获取库、工具和设置,你必须指定 toolchain 文件。 在上面的 Ubuntu 示例中,将创建一个名为 depends/x86_64-pc-linux-gnu/toolchain.cmake 的文件。要在配置 Bitcoin Core 期间使用它:

cmake -B build --toolchain depends/x86_64-pc-linux-gnu/toolchain.cmake

依赖选项

以下选项可以在运行 make 时设置:make FOO=bar

  • SOURCES_PATH: 下载的源代码将放在这里
  • BASE_CACHE: 构建的软件包将放在这里
  • SDK_PATH: SDK 所在的路径(macOS 使用)
  • FALLBACK_DOWNLOAD_PATH: 如果无法获取源文件,请先尝试这里
  • C_STANDARD: 设置使用的 C 标准版本。默认为 c11
  • CXX_STANDARD: 设置使用的 C++ 标准版本。默认为 c++20
  • NO_BOOST: 不要下载/构建/缓存 Boost
  • NO_LIBEVENT: 不要下载/构建/缓存 Libevent
  • NO_QT: 不要下载/构建/缓存 Qt 及其依赖项
  • NO_QR: 不要下载/构建/缓存启用 qrencode 所需的软件包
  • NO_ZMQ: 不要下载/构建/缓存启用 ZeroMQ 所需的软件包
  • NO_WALLET: 不要下载/构建/缓存启用钱包所需的库 (SQLite)
  • NO_USDT: 不要下载/构建/缓存启用 USDT 跟踪点所需的软件包
  • MULTIPROCESS: 构建 libmultiprocess (实验性)
  • DEBUG: 禁用一些优化并启用更多运行时检查
  • HOST_ID_SALT: 生成主机包 ID 时使用的可选 salt
  • BUILD_ID_SALT: 生成构建包 ID 时使用的可选 salt
  • LOG: 对单个包使用基于文件的日志记录。在包构建期间,其日志文件位于 depends 目录中,并且在构建错误的情况下会自动打印出日志文件。成功构建后,日志文件会与包归档文件一起移动
  • LTO: 启用 LTO 所需的选项。不会将 -flto 相关选项添加到 *FLAGS。

如果某些包没有构建,例如 make NO_WALLET=1,则在生成 Bitcoin Core 构建系统时,将设置相应的 CMake 缓存变量。在这种情况下,-DENABLE_WALLET=OFF

交叉编译

要为另一个 arch/OS 构建:

make HOST=host-platform-triplet

例如:

make HOST=x86_64-w64-mingw32 -j4

用于交叉编译的常见 host-platform-triplet 有:

  • i686-pc-linux-gnu 用于 Linux x86 32 位
  • x86_64-pc-linux-gnu 用于 Linux x86 64 位
  • x86_64-w64-mingw32 用于 Win64
  • x86_64-apple-darwin 用于 macOS
  • arm64-apple-darwin 用于 ARM macOS
  • arm-linux-gnueabihf 用于 Linux ARM 32 位
  • aarch64-linux-gnu 用于 Linux ARM 64 位
  • powerpc64-linux-gnu 用于 Linux POWER 64 位(大端序)
  • powerpc64le-linux-gnu 用于 Linux POWER 64 位(小端序)
  • riscv32-linux-gnu 用于 Linux RISC-V 32 位
  • riscv64-linux-gnu 用于 Linux RISC-V 64 位
  • s390x-linux-gnu 用于 Linux S390X

路径会自动配置,不需要其他选项。

对于 macOS 交叉编译
apt install clang lld llvm zip

需要 Clang 18 或更高版本。在进行交叉编译之前,你还必须获取 macOS SDK。在 depends 目录下,创建一个名为 SDKs 的子目录。然后,将提取的 SDK 放在这个新目录下。 更多信息,请参见 SDK Extraction

对于 Win64 交叉编译
apt install g++-mingw-w64-x86-64-posix
对于 linux (包括 i386, ARM) 交叉编译

常见的 linux 依赖项:

sudo apt-get install g++-multilib binutils

对于 linux ARM 交叉编译:

sudo apt-get install g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf

对于 linux AARCH64 交叉编译:

sudo apt-get install g++-aarch64-linux-gnu binutils-aarch64-linux-gnu

对于 linux POWER 64 位交叉编译(没有 32 位包):

sudo apt-get install g++-powerpc64-linux-gnu binutils-powerpc64-linux-gnu g++-powerpc64le-linux-gnu binutils-powerpc64le-linux-gnu

对于 linux RISC-V 64 位交叉编译(没有 32 位包):

sudo apt-get install g++-riscv64-linux-gnu binutils-riscv64-linux-gnu

对于 linux S390X 交叉编译:

sudo apt-get install g++-s390x-linux-gnu binutils-s390x-linux-gnu

其他目标

download: 运行 'make download' 来获取所有源代码而不进行构建
download-osx: 运行 'make download-osx' 来获取 macOS 构建所需的所有源代码
download-win: 运行 'make download-win' 来获取 win 构建所需的所有源代码
download-linux: 运行 'make download-linux' 来获取 linux 构建所需的所有源代码
  • 原文链接: github.com/bitcoin/bitco...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
bitcoin
bitcoin
江湖只有他的大名,没有他的介绍。