如何在不同操作系统上构建 Bitcoin Core 的依赖项?

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

用法

Ubuntu & Debian

apt install cmake curl make patch

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

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

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

make

macOS

安装 Xcode 命令行工具和 Homebrew 包管理器。

brew install cmake make ninja

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

gmake

FreeBSD

pkg install bash cmake curl gmake

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

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 放在这个新目录下。

对于 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 构建所需的所有源代码

标签:

上一篇:Ethena:基差交易稳定币创新先锋
下一篇:拜登退选引爆加密市场:政治迷因币剧烈波动 哈里斯立场成焦点