
Distant构建与交叉编译指南从源码到musl静态二进制11个平台一次搞定【免费下载链接】distant (Alpha stage software) Library and tooling that supports remote filesystem and process operations. 项目地址: https://gitcode.com/gh_mirrors/di/distantDistant是一款用 Rust 编写的远程文件系统与进程操作工具支持通过 SSH、Docker 或本地 Host 后端管理远程电脑。本文带你从源码出发掌握 Distant 的构建方法、musl 静态二进制编译技巧以及覆盖 11 个平台的交叉编译方案轻松产出可分发的 release 产物。1. 构建前准备安装 Rust 工具链Distant 要求Rust 1.88.0见 Cargo.toml 中的rust-version声明。推荐使用 rustup 安装curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh CI 中会用独立的 1.88.0 环境做 MSRV 校验.github/workflows/ci.yml本地构建用 stable 即可。获取源码git clone https://gitcode.com/gh_mirrors/di/distant cd distant2. Cargo 一键构建Debug 与 Release 版本Distant 是一个多 crate 工作区核心成员包括 distant-core/协议与网络层、distant-ssh/SSH 后端、distant-docker/Docker 后端和 distant-host/本地 Host 后端。# Debug 构建快速迭代调试 cargo build # Release 构建体积优化opt-levelz LTO strip cargo build --release # 全功能构建docker host ssh pty cargo build --all-features --workspace # 只构建某个后端 crate cargo build -p distant-ssh # 从源码安装到本地 cargo install --path .Release 配置在 Cargo.toml 中已精心调优配置项取值作用opt-levelz优先优化体积ltotrue跨 crate 全量链接时优化codegen-units1最大化优化牺牲一点编译速度striptrue自动去除符号表panicabort减少运行时开销默认启用的 feature 为docker、host、ssh、ptyCargo.toml。3. Nix 无依赖构建一条命令搞定环境如果已启用 Nix flakes完全不用手动装 Rust 和任何系统依赖flake.nix 基于 crane 实现# 构建 release 二进制 nix build # 产物位于 ./result/bin/distant # 进入包含全部开发工具的 shell nix developflake 还特别处理了patches/目录下的本地补丁 crate 和嵌入的默认配置文件保证构建环境完全可复现。4. musl 静态二进制一次编译到处运行想让二进制完全不依赖 libc可以拷贝到任何 Linux 机器直接运行答案是编译 musl 目标rustup target add x86_64-unknown-linux-musl cargo build --release --target x86_64-unknown-linux-musl产物位于target/x86_64-unknown-linux-musl/release/distant是一个纯静态文件。macOS 上交叉编译 musl 的步骤macOS 需要额外安装 musl 交叉工具链brew install FiloSottile/musl-cross/musl-cross # 用 musl 自带的 strip 工具瘦身 x86_64-linux-musl-strip target/x86_64-unknown-linux-musl/release/distant5. 交叉编译11 个平台目标清单Distant 的 CI 发布流程.github/workflows/release.yml覆盖以下 11 个构建目标平台目标 triple特殊依赖macOS Intelx86_64-apple-darwin—macOS Apple Siliconaarch64-apple-darwin—macOS 通用二进制lipo合并双架构两条都先编译Windows x64x86_64-pc-windows-msvc—Windows ARM64aarch64-pc-windows-msvc—Linux x64x86_64-unknown-linux-gnu—Linux ARM64aarch64-unknown-linux-gnugcc-aarch64-linux-gnuLinux 32 位 ARMarmv7-unknown-linux-gnueabihfgcc-arm-linux-gnueabihfLinux musl x64x86_64-unknown-linux-muslmusl-toolsLinux musl ARM64aarch64-unknown-linux-muslmusl 交叉工具链FreeBSDx86_64-unknown-freebsd在真实 FreeBSD 虚机构建几个实战技巧ARM Linux在 x86_64 主机上交叉编译只需sudo apt install gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu然后加--target参数即可musl x64装musl-tools后由 rustup 自动识别链接器FreeBSD 等 BSD 系统由于工具链难交叉CI 直接用cross-platform-actions启动真实系统虚拟机构建发布时 CI 会为每个二进制生成SHA256 与 BLAKE2 校验和方便用户验证完整性6. 版本与发布流程速览开发版本始终带-dev后缀如0.21.0-dev通过 scripts/set-version.sh 统一设置工作区版本并打 tag推送 tag 即自动触发上述全平台构建完整发布步骤见 docs/PUBLISHING.md日常构建细节见 docs/BUILDING.md测试体系单元/集成/CLI 三层说明见 docs/TESTING.md⚠️ 注意项目通过[patch.crates-io]引用了 patches/nix-0.29.0/ 和 patches/ssh2-config-0.7.0/ 两个本地补丁 crate。如果用 Nix 或外部构建务必保留patches/目录否则依赖解析会失败。总结Distant 的构建体验可以概括为三条路径日常开发用cargo build追求极致分发用musl 静态二进制面向多平台分发则交给 CI 的 11 平台矩阵。配合 Nix 可复现构建和严格的 MSRV 校验即使是新手也能按 docs/BUILDING.md 的步骤在几分钟内产出第一个可用的 Distant 二进制。【免费下载链接】distant (Alpha stage software) Library and tooling that supports remote filesystem and process operations. 项目地址: https://gitcode.com/gh_mirrors/di/distant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考