尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

rippled(xrpld)开发环境搭建完全指南:C++23 工具链、Nix 开发 Shell 与跨平台配置

rippled(xrpld)开发环境搭建完全指南:C++23 工具链、Nix 开发 Shell 与跨平台配置 rippledxrpld开发环境搭建完全指南C23 工具链、Nix 开发 Shell 与跨平台配置【免费下载链接】rippledDecentralized cryptocurrency blockchain daemon implementing the XRP Ledger protocol in C项目地址: https://gitcode.com/GitHub_Trending/ri/rippled导读本指南以 docs/build/environment.md 为主体系统讲解如何为 XRP Ledger 的 C 守护进程 xrpld 搭建完整的开发环境。你将掌握 CI 实测的编译器版本要求、Git/Python/Conan/CMake 等必需工具的安装与验证方法、Linux/macOS 上推荐的 Nix 开发 Shell 用法、macOS Apple Clang 版本锁定技巧、Windows 手动安装步骤以及可选的 Rust 工具链和 clang-tidy 静态分析配置。读完本文你可以在三大主流平台上复现与项目 CI 完全一致的可编译环境并顺利进入 BUILD.md 中的构建流程。1. 环境总览xrpld 构建需要什么xrpld 是采用 C 编写的 XRP Ledger 协议守护进程其构建流程依赖一套完整的工具链。仓库根目录的 BUILD.md 在开头明确声明构建说明默认你已具备包含Git、Python、Conan、CMake 和 C 编译器的开发环境而 environment.md 这份文档正是用来补齐这一前提的。整个环境的依赖关系可以概括为层级组成说明编译器GCC / Clang / Apple Clang / MSVC必须支持C23标准项目默认方言构建系统CMake负责配置与生成构建文件包管理器Conan拉取并编译第三方依赖Boost、protobuf 等脚本语言Python支撑 Conan 及代码生成工具链版本控制Git获取源码、参与贡献所必需可选Rust 工具链仅在开启-DrustON构建 Rust crate 时需要其中 Conan 和 CMake 的分工值得特别注意Conan 负责依赖管理conan install生成 CMake 工具链文件CMake 负责实际的构建配置cmake -DCMAKE_TOOLCHAIN_FILE...。两者缺一不可这也是后续构建流程见 BUILD.md 的 Build and Test 一节的核心工作方式。2. 编译器版本要求C23 与 CI 实测版本xrpld 默认以C23方言编译因此你的工具链必须支持该标准。这一要求在源码层面有明确证据CMakeLists.txt 中设置了set(CMAKE_CXX_STANDARD 23)与set(CMAKE_CXX_STANDARD_REQUIRED ON)。当前 CI 实测通过的编译器版本如下编译器版本GCC15.2Clang22Apple Clang21MSVCVisual Studio 2026同时LLVM 工具链clang-tidy和clang-format也被固定为版本 22。2.1 关于旧编译器旧版编译器可能无法编译最新的develop分支代码。原因在于代码库现在依赖 C23 特性并且已针对clang-tidy的检查结果做了适配调整。如果最新代码无法编译官方建议先升级构建工具链。如果确实无法升级项目接受修复旧编译器构建的 Pull Request但有两个前提改动必须小而清晰不能降低代码可读性项目不会为了维持未测试编译器可编译而放弃 C23 特性或添加侵入式 workaround。也就是说只有上表列出的版本是 CI 实测保障的其他版本的兼容性属于 best-effort尽力而为。2.2 源码侧的版本佐证工具链版本并非空口无凭仓库中有多处与之对应bin/check-tools.sh 中定义了gcc_version15、llvm_version22两个版本后缀变量并会探测clang-22、gcc-15等带后缀的可执行文件nix/check-tools/nix-ubuntu-amd64.txt 记录了 Nix 环境中工具版本快照例如clang version 22.1.7、Conan version 2.28.1该快照由 CI 校验确保环境与文档一致。3. 必需工具清单与最低版本除编译器外构建 xrpld 还需要以下工具工具最低版本说明Git任意较新版本源码获取与版本管理Python3.11Conan 与代码生成脚本依赖Conan2.17C 依赖包管理器CMake3.16与 CMakeLists.txt 中的cmake_minimum_required(VERSION 3.16)一致在Linux 和 macOS上Nix 开发 Shell 会一次性提供以上全部工具在Windows上则需要手动安装详见第 5 节。注意使用-DrustON构建时还需要 Rust 工具链见第 6 节但默认构建不需要因此 Rust 未列入上表。3.1 验证环境./bin/check-tools.sh工具安装完成后官方推荐运行仓库自带的校验脚本确认一切就绪./bin/check-tools.sh该脚本bin/check-tools.sh的行为细节非常值得了解平台感知自动检测 Linux / macOS / WindowsGit Bash/MSYSLinux 检查完整 Nix CI 工具集macOS 减掉 GCC/g/gcov/moldWindows 仅检查核心构建工具CMake、Conan、Git、PythonMSVC 需单独提供、不在检查范围内逐项探针对每个工具执行--version类探针输出状态、首个非空版本行与解析后的可执行文件路径网络连通性检查默认还会通过git clone验证 HTTPS 连通性CA bundle 是否配置正确可用CHECK_TOOLS_SKIP_CLONE环境变量跳过退出码只要有工具缺失或不可运行脚本以非零状态退出并汇总缺失列表全部通过则打印All N checked tools are present and runnable.。4. Linux 与 macOSNix 开发 Shell推荐在 Linux 和 macOS 上官方推荐的方式是使用 Nix 开发 Shell。它的核心价值在于一条命令即可获得与 CI 完全一致的工具集git、python、conan、cmake、clang-tidy、clang-format等且不会向系统全局安装任何软件。4.1 进入开发 Shell在仓库根目录执行nix --experimental-features nix-command flakes develop首次运行需要几分钟下载并构建环境后续运行会快很多。该命令会下载并配置全部开发工具CMake、Ninja、Conan 等按平台配置合适的编译器Linux 上由 Nix 提供 GCCmacOS 上由 Nix 提供 Clang。如果想省去每次敲--experimental-features nix-command flakes的麻烦可以永久启用 flakes创建~/.config/nix/nix.conf并写入experimental-features nix-command flakes此后直接使用nix develop即可。4.2 选择不同编译器Nix 开发 Shell 支持通过.#前缀选择编译器命令说明nix develop平台默认Linux 用 GCCmacOS 用 Clangnix develop .#gcc使用 GCC——与 CI 完全相同的工具链Linux 上带自定义 glibcnix develop .#clang使用 Clang——与 CI 完全相同的工具链Linux 上带自定义 glibcnix develop .#gcc-plain/.#clang-plain仅 Linux 可用使用 nixpkgs 官方编译器跳过自定义 glibc 构建但与 CI 不完全一致nix develop .#no-compiler使用系统自带的编译器注意 macOS 上不存在-plain变体macOS 没有自定义 glibc.#gcc和.#clang本就是 nixpkgs 原版工具链。可用nix flake show查看全部可用的开发 Shell。如需使用 zsh/fish 等其他 shell可加-c参数nix develop -c zsh。4.3 macOS 使用系统 Apple Clang 的注意事项如果不想用 Nix 提供的 Clang而是通过nix develop .#apple-clang使用系统全局的 Apple Clang那么编译器版本取决于你安装的 Xcode或 Command Line Tools。请先确认版本不低于上表中的实测版本clang --version4.4 Nix Shell 的 Conan 自动配置进入 Nix Shell 时会自动执行 conan/init.sh所以 BUILD.md 中的 Set Up Conan 步骤已经替你完成了。该脚本会安装 conan/global.conf配置并行下载/上传数量与重试策略安装 conan/profiles 下的 profile默认build_typeDebug、compiler.cppstd23添加xrplfConan 远程仓库用于托管部分依赖并将其置于索引 0 以保证补丁配方优先于 Conan Center。Nix Shell 使用独立的 Conan 主目录CONAN_HOME~/.conan2-nix与系统环境隔离。4.5 direnv 自动激活可选仓库根目录自带.envrc配合 direnv 或 nix-direnv 可在进入仓库目录时自动激活开发 Shell。这是从任意 shell 使用该环境最稳健的方式direnv 在 shell 启动文件之后加载环境Nix 提供的工具会优先于 Homebrew 等路径中的同名工具。首次使用只需在仓库根目录运行一次direnv allow。更多 Nix 细节含故障排查参见 Using the Nix development shell 与 Nix 问题排查。5. macOS管理 Apple Clang 版本macOS 开发者如果使用系统 Apple Clang 开发其他 Xcode 应用可能会持续升级到最新版本而这很可能会导致 xrpld 构建出问题。官方建议安装并固定一个特定版本的 Xcode。5.1 下载 Xcode访问 Apple Developer Downloads需 Apple Developer 账号登录搜索包含所需 Apple Clang 版本的 Xcode 版本下载对应的.xip文件。5.2 安装并配置 Xcode# 解压 .xip 文件并重命名以便管理版本 # 示例Xcode_16.2.app # 移动到 Applications 目录 sudo mv Xcode_16.2.app /Applications/ # 设为默认工具链持久生效 sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer # 设置环境变量临时生效 export DEVELOPER_DIR/Applications/Xcode_16.2.app/Contents/Developer其中xcode-select -s是持久切换默认工具链的方式DEVELOPER_DIR环境变量则在当前 shell 会话内临时指定二者可配合使用。6. Windows手动安装Nix 在 Windows 上不可用因此所有工具都需要手动安装Visual Studio 2026安装时勾选使用 C 的桌面开发Desktop development with C工作负载——它提供 MSVC 编译器和 x64 Native Tools Command Prompt。CI 使用Visual Studio 18 2026generator 配置 CMakeGit for WindowsPython、Conan、CMake版本按第 3 节表格中的最低版本要求安装Rust 工具链仅在构建-DrustON时需要见下一节。官方对 Windows 的定位是部分工程师用于开发不建议用于生产部署详见 BUILD.md 的 Operating Systems 一节。7. Rust 工具链可选默认不需要仓库包含一个 Rust workspacecrates/其中的 crate 通过 cxx 绑定暴露给 C 代码。但它不属于默认构建CMake 的rust选项默认 OFF关闭时完全不需要 Rust 工具链——crates目录不会加入构建、不会生成 cxxbridge 绑定、相关 C 互操作测试也不会编译。CI 构建始终传入-DrustON。7.1 工具链版本固定Rust 工具链cargo、rustc被固定在仓库根目录的 rust-toolchain.toml 中当前内容为[toolchain] channel 1.97.1 components [rustfmt, clippy, rust-analyzer, llvm-tools-preview, rust-src] profile minimal如果你用 rustup 安装 Rust该文件会被自动识别仓库内的cargo/rustc会自动使用被固定的版本。Rust 构建在 CMake 侧所需的其他依赖与其余依赖一样来自 Conan无需额外安装。7.2 Nix Shell 中的 RustNix 开发 Shell 已内置被固定的 Rust 工具链以及cargo-audit、cargo-llvm-cov、cargo-nextest插件因此-DrustON在 Nix Shell 中开箱即用nix.md 中有详细说明。8. Clang-tidy静态分析非构建必需clang-tidy用于在本地运行静态分析检查见 CONTRIBUTING.md它不是构建项目所必需的。项目使用的 clang-tidy 版本即第 2 节表格中列出的版本Clang 22。在 Linux 和 macOS 上Nix 开发 Shell 直接提供该精确版本无需单独安装通过run-clang-tidy运行即可。9. 从环境到构建下一步环境就绪后即可进入构建流程。完整步骤见 BUILD.md其关键链路为初始化 Conan./conan/init.shNix Shell 中已自动完成生成依赖与 CMake 文件在构建目录中执行conan install .. --output-folder . --build missing --settings build_typeReleaseDebug 同理配置 CMakecmake -DCMAKE_TOOLCHAIN_FILE:FILEPATHbuild/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPERelease -DxrpldON -DtestsON ..构建cmake --build . --parallel NN 通常取 CPU 核心数的一半测试./xrpld --unittest --unittest-jobs N。如果遇到依赖问题可参考 BUILD.md 的 Troubleshooting 一节含 Conan 缓存清理、lockfile 重新生成等Conan 的高级配置见 Advanced Conan configuration。10. 小结搭建 xrpld 开发环境的关键结论可归纳为三点工具链版本是硬约束C23 是默认方言编译器必须至少匹配 CI 实测的 GCC 15.2 / Clang 22 / Apple Clang 21 / MSVCVS 2026版本旧编译器失败时应先升级工具链Linux/macOS 首选 Nixnix --experimental-features nix-command flakes develop一条命令即可获得与 CI 完全一致且不污染系统的完整环境并自动完成 Conan 配置Windows 手动装配VS 2026含 C 桌面开发工作负载 Git for Windows Python/Conan/CMake 即可Rust 仅在选择-DrustON时按 rust-toolchain.toml 固定的版本安装。完成环境搭建后用./bin/check-tools.sh验证一切就绪然后进入 BUILD.md 的构建与测试流程即可。【免费下载链接】rippledDecentralized cryptocurrency blockchain daemon implementing the XRP Ledger protocol in C项目地址: https://gitcode.com/GitHub_Trending/ri/rippled创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表