【Windows】tauri+rust运行打包工具链安装

1. 各个工具介绍

MinGW-w64 (Minimalist GNU for Windows 64)

bash 复制代码
# MinGW 提供的是 Windows 下的 GNU 工具链
gcc --version          # GNU C 编译器
g++ --version          # GNU C++ 编译器  
make --version         # 构建工具

作用

  • 在 Windows 上提供 Linux 风格的开发环境
  • 编译生成 Windows 原生可执行文件
  • 提供 POSIX API 兼容层

特点

  • 不依赖 Cygwin 的模拟层
  • 直接生成 Windows 原生二进制文件
  • 轻量级,性能较好

Scoop

bash 复制代码
# Windows 包管理器
scoop install git      # 安装软件
scoop list             # 查看已安装
scoop update           # 更新

作用

  • Windows 下的命令行包管理器
  • 类似 macOS 的 Homebrew、Linux 的 apt/yum
  • 方便管理开发工具链

GCC (GNU Compiler Collection)

bash 复制代码
gcc -v                 # 查看版本
g++ -v                 # C++ 编译器版本

组成

  • C 编译器 (gcc)
  • C++ 编译器 (g++)
  • 标准库 (libstdc++)
  • 其他语言编译器

2. 为什么 Tauri 需要这套工具链

Tauri 的架构需求

复制代码
Tauri 应用结构:
┌─────────────────┐
│   Vue3 前端     │  ← 需要 Node.js
├─────────────────┤
│   Tauri 中间层   │  ← 需要 Rust 工具链
├─────────────────┤
│   Rust 后端     │  ← 需要 C/C++ 编译器
└─────────────────┘

具体原因

1. Rust 依赖 C 工具链
toml 复制代码
# Cargo.toml 中的依赖可能包含 C/C++ 代码
[dependencies]
# 这些 crate 可能需要编译 C/C++ 代码
libc = "0.2"

Rust 的 build.rs 构建脚本

rust 复制代码
// 很多 Rust crate 在编译时需要调用 C 编译器
fn main() {
    // 告诉 Cargo 当 C 文件改变时重新构建
    println!("cargo:rerun-if-changed=src/foo.c");
    
    // 编译 C 代码
    cc::Build::new()
        .file("src/foo.c")
        .compile("foo");
}
2. 系统库绑定

Tauri 需要与操作系统 API 交互:

  • 窗口管理
  • 文件系统操作
  • 系统托盘
  • 菜单创建

这些都需要调用 Windows API,而 Rust 通过 FFI (Foreign Function Interface) 调用这些 API。

3. 链接系统库
rust 复制代码
// Rust 代码需要链接 Windows 系统库
#[link(name = "user32")]
extern "system" {
    fn MessageBoxA(hWnd: *mut c_void, lpText: *const u8, lpCaption: *const u8, uType: u32) -> i32;
}

3. 完整的工具链依赖关系

复制代码
Scoop (包管理)
    ↓
安装 MinGW-w64 + GCC
    ↓
提供 C/C++ 编译环境
    ↓
Rust 编译依赖的 crate
    ↓  
成功编译 Tauri 应用
    ↓
生成 Windows 可执行文件

4. 安装和配置步骤

使用 Scoop 安装完整工具链

bash 复制代码
# 1. 安装 Scoop
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex

# 2. 安装 MinGW-w64 和 GCC
scoop install mingw
scoop install gcc

# 3. 添加到 PATH
$env:PATH = "C:\Users\$env:USERNAME\scoop\apps\mingw\current\bin;" + $env:PATH

验证安装

bash 复制代码
# 检查工具是否可用
gcc --version
g++ --version  
make --version
which gcc

5. 替代方案

MSVC 工具链

bash 复制代码
# 使用 Visual Studio 的编译器
cargo +msvc toolchain install stable

对比

  • MinGW: 更接近 Linux 开发体验,生成文件较小
  • MSVC: 更好的 Windows 集成,调试体验更好

为什么 Tauri 推荐 MinGW

  1. 跨平台一致性:与 Linux/macOS 开发体验一致
  2. 依赖兼容性:很多 Rust crate 对 MinGW 支持更好
  3. 打包大小:生成的二进制文件通常更小
  4. 开源生态:与开源工具链集成更好

6. 故障排除

常见问题

bash 复制代码
# 错误:找不到 gcc
error: linker `gcc` not found

# 解决方案
scoop install gcc

环境变量配置

bash 复制代码
# 检查 Rust 工具链
rustup show

# 设置默认工具链
rustup default stable-x86_64-pc-windows-gnu  # MinGW
rustup default stable-x86_64-pc-windows-msvc # MSVC

总结

Tauri 需要这套工具链是因为:

  1. Rust 生态依赖:很多 Rust crate 需要 C 编译器来编译 C 代码
  2. 系统交互需求:需要编译与操作系统交互的代码
  3. 跨平台编译:需要统一的编译环境确保各平台行为一致
  4. 性能优化:原生编译确保最佳性能

MinGW-w64 + GCC 提供了在 Windows 上最接近 Linux 开发体验的工具链,这也是为什么 Tauri 社区更推荐使用这套方案。

相关推荐
百锦再1 小时前
第11章 泛型、trait与生命周期
android·网络·人工智能·python·golang·rust·go
权泽谦1 小时前
R Shiny 交互式网页实战:从零到上线可视化应用
开发语言·信息可视化·r语言
hweiyu002 小时前
Go Fiber 简介
开发语言·后端·golang
会跑的兔子2 小时前
Android 16 Kotlin协程 第二部分
android·windows·kotlin
hhhh明4 小时前
quest2+alvr+steamvr
linux·windows·quest2
s9123601014 小时前
【Rust】m2 mac 编译linux 、aarch、win 程序
rust
ᐇ9594 小时前
Java LinkedList集合全面解析:双向链表的艺术与实战
java·开发语言·链表
Source.Liu4 小时前
【ISO8601库】日期时间解析器测试套件详解(tests.rs)
rust·time·iso8601
码银5 小时前
【数据结构】顺序表
java·开发语言·数据结构