该文档介绍了如何使用 Depends build 系统构建和缓存 Bitcoin Core 的依赖项,支持交叉编译。文档提供了在 Ubuntu、Debian、macOS、FreeBSD, NetBSD, OpenBSD 等系统上的使用方法,以及如何配置 Bitcoin Core 以使用 Depends build 的输出,以及交叉编译的配置和常用参数。
这是一个构建和缓存构建 Bitcoin Core 所需依赖项的系统。它支持交叉编译。更多详情请参见 description.md,以及 packages.md 以了解如何添加包。
apt install cmake curl make patch
如果你不打算使用 GUI 并且将使用 NO_QT=1
进行构建,请跳过以下软件包:
apt install bison g++ ninja-build pkgconf python3 xz-utils
要为当前的 arch+OS 构建依赖项:
make
安装 Xcode 命令行工具和 Homebrew 包管理器,请参见 build-osx.md。
brew install cmake make ninja
要为当前的 arch+OS 构建依赖项:
gmake
pkg install bash cmake curl gmake
如果你不打算使用 GUI 并且将使用 NO_QT=1
进行构建,请跳过以下软件包:
pkg install bison ninja pkgconf python3
要为当前的 arch+OS 构建依赖项:
gmake
pkgin install bash cmake curl gmake perl
要为当前的 arch+OS 构建依赖项:
gmake
pkg_add bash cmake curl gmake gtar
要为当前的 arch+OS 构建依赖项:
gmake
在配置 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
: 不要下载/构建/缓存 BoostNO_LIBEVENT
: 不要下载/构建/缓存 LibeventNO_QT
: 不要下载/构建/缓存 Qt 及其依赖项NO_QR
: 不要下载/构建/缓存启用 qrencode 所需的软件包NO_ZMQ
: 不要下载/构建/缓存启用 ZeroMQ 所需的软件包NO_WALLET
: 不要下载/构建/缓存启用钱包所需的库 (SQLite)NO_USDT
: 不要下载/构建/缓存启用 USDT 跟踪点所需的软件包MULTIPROCESS
: 构建 libmultiprocess (实验性)DEBUG
: 禁用一些优化并启用更多运行时检查HOST_ID_SALT
: 生成主机包 ID 时使用的可选 saltBUILD_ID_SALT
: 生成构建包 ID 时使用的可选 saltLOG
: 对单个包使用基于文件的日志记录。在包构建期间,其日志文件位于 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
用于 Win64x86_64-apple-darwin
用于 macOSarm64-apple-darwin
用于 ARM macOSarm-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路径会自动配置,不需要其他选项。
apt install clang lld llvm zip
需要 Clang 18 或更高版本。在进行交叉编译之前,你还必须获取 macOS SDK。在 depends 目录下,创建一个名为 SDKs
的子目录。然后,将提取的 SDK 放在这个新目录下。
更多信息,请参见 SDK Extraction。
apt install g++-mingw-w64-x86-64-posix
常见的 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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!