温馨提示×

Linux中Rust项目的构建流程是怎样的

小樊
39
2025-12-28 01:33:45
栏目: 编程语言

Linux下Rust项目的构建流程

一 准备环境

  • 使用rustup安装并管理工具链(推荐方式):
    • 安装命令:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    • 重新加载环境:source $HOME/.cargo/env
    • 验证版本:rustc --versioncargo --version
  • 也可使用发行版包管理器安装(如 Ubuntu:sudo apt install cargo),但rustup更便于多版本与工具链管理。

二 创建与配置项目

  • 创建项目:
    • 二进制可执行:cargo new my_app
    • 库:cargo new my_lib --lib
  • 项目结构要点:
    • 源码在src/,入口为src/main.rs(二进制)或src/lib.rs(库)
    • 配置集中在Cargo.toml,常用段落:
      • [package]:项目元信息(如nameversionedition
      • [dependencies][dev-dependencies][build-dependencies]:依赖管理
      • [features]:可选特性开关
      • [profile]:构建优化配置(如devrelease
      • [workspace]:多包工作区管理
  • 添加依赖示例:
    • [dependencies]中加入:rand = "0.8",随后运行cargo build自动下载与编译依赖。

三 构建与运行

  • 常用构建与运行命令:
    • 调试构建:cargo build(产物在target/debug/
    • 发布构建:cargo build --release(产物在target/release/,开启优化)
    • 直接运行:cargo run(等价于构建并运行)
    • 运行指定产物:./target/debug/my_app./target/release/my_app
  • 代码质量与测试:
    • 快速检查:cargo check
    • 运行测试:cargo test
    • 格式化:cargo fmt
    • 静态检查:cargo clippy
  • 测试覆盖率(可选):
    • 安装:cargo install cargo-tarpaulin
    • 生成报告:cargo tarpaulin --out Html(输出HTML报告,便于查看覆盖率)。

四 跨平台构建与打包

  • 交叉编译基本用法:
    • 为目标平台构建:cargo build --target <triple>
    • 例如构建Windows x86_64可执行文件(使用GNU工具链):
      • 安装目标:rustup target add x86_64-pc-windows-gnu
      • 构建:cargo build --target x86_64-pc-windows-gnu
  • 打包分发(可选):
    • 使用cargo-bundle将应用及其资源打包为可分发包:
      • 安装:cargo install cargo-bundle
      • 打包:cargo bundle --release(产物在target/release/bundle/)。

五 部署与运行服务

  • 将发布产物复制到目标服务器(示例):
    • scp target/release/your_app user@server:/opt/your_app
  • 在服务器上运行:
    • 直接执行:./your_app
  • 以系统服务方式运行(可选,使用systemd):
    • 创建服务文件:/etc/systemd/system/your_app.service
    • 示例内容:
      [Unit]
      Description=Your Rust App
      After=network.target
      
      [Service]
      ExecStart=/opt/your_app
      Restart=always
      User=your_user
      WorkingDirectory=/opt
      
      [Install]
      WantedBy=multi-user.target
      
    • 启用与启动:
      • sudo systemctl daemon-reload
      • sudo systemctl start your_app
      • sudo systemctl enable your_app

0