☰
Meetily 源码编译指南:三平台从零构建与 GPU 加速配置详解
2026/10/17 21:56:34 网站建设 项目流程

Meetily 源码编译指南:三平台从零构建与 GPU 加速配置详解

【免费下载链接】meetilyPrivacy first, AI meeting assistant with 4x faster Parakeet/Whisper live transcription, speaker diarization, and Ollama summarization built on Rust. 100% local processing. no cloud required. Meetily (Meetly Ai - https://meetily.ai) is the #1 Self-hosted, Open-source Ai meeting note taker for macOS & Windows. Understand How to write meeting minutes项目地址: https://gitcode.com/GitHub_Trending/me/meetily

本篇技术指南以 Meetily 官方构建文档 docs/BUILDING.md 为主体,结合仓库内构建脚本与 Rust 工程配置源码,完整讲解 Linux、macOS、Windows 三个平台从源码构建 Meetily 的完整流程:包括基础依赖安装、一键开发/生产构建、GPU 自动检测原理、CUDA/Vulkan/ROCm 手动加速配置、TAURI_GPU_FEATURE强制覆盖与常见故障排查。读者完成后,将能够在自己的机器上独立完成 Meetily 的编译构建,并按需启用对应平台的硬件加速。

一、构建体系总览:三层自动化

Meetily 的构建体系围绕 Tauri 桌面应用框架组织,前端为 Next.js(frontend/),核心转录与会议逻辑位于frontend/src-tauri/(Rust),另有一个独立的llama-helper侧车(sidecar)进程用于本地 LLM 推理。构建的核心诉求是自动探测硬件能力并选择合适的加速后端,其完整调用链为:

  1. dev-gpu.sh/build-gpu.sh(Bash 包装脚本)先确认package.json位置(项目根目录或frontend/均可),再检测包管理器(优先pnpm,回退npm);
  2. 调用 frontend/scripts/auto-detect-gpu.js 探测 GPU 能力,输出特征名(如cuda、hipblas、vulkan、openblas);
  3. 以--features <特征>编译llama-helper侧车(debug 或 release);
  4. 将编译产物复制到src-tauri/binaries目录并附带 target triple 命名;
  5. 通过pnpm run tauri:dev/tauri:build启动 Tauri,特征通过环境变量TAURI_GPU_FEATURE传入(实际由 frontend/scripts/tauri-auto.js 执行tauri dev -- --features <特征>)。

从源码结构看,package.json中预置了tauri:dev:cuda、tauri:dev:vulkan、tauri:dev:metal、tauri:dev:coreml、tauri:dev:openblas、tauri:dev:hipblas等显式脚本,同时也提供tauri:dev(走自动检测),说明项目同时支持“手动指定”与“自动探测”两条路径。

二、Linux 平台构建

2.1 快速开始(推荐新手)

先安装基础依赖,再运行脚本即可,无需手工配置任何 GPU 参数:

# Ubuntu/Debian sudo apt update sudo apt install build-essential cmake git # Fedora/RHEL sudo dnf install gcc-c++ cmake git # Arch Linux sudo pacman -S base-devel cmake git

构建与运行:

# 开发模式(带热重载) ./dev-gpu.sh # 生产构建 ./build-gpu.sh

脚本会自动完成以下动作:

  • NVIDIA GPU→ CUDA 加速(前提:已安装 CUDA Toolkit)
  • AMD GPU→ ROCm 加速(前提:已安装 ROCm)
  • 无 GPU→ 优化的 CPU 模式(仍然可用)

2.2 自动检测原理与优先级

自动检测由 frontend/scripts/auto-detect-gpu.js 完成。该脚本通过execSync调用which/where判断命令行工具是否存在,并结合环境变量逐级判断。检测优先级如下表所示:

优先级硬件检查条件结果
1️⃣NVIDIA CUDAnvidia-smi存在 且(CUDA_PATH或nvcc存在)--features cuda
2️⃣AMD ROCmrocm-smi存在 且(ROCM_PATH或hipcc存在)--features hipblas
3️⃣Vulkanvulkaninfo存在 且VULKAN_SDK与BLAS_INCLUDE_DIRS均已设置--features vulkan
4️⃣OpenBLASBLAS_INCLUDE_DIRS已设置--features openblas
5️⃣CPU-only以上均不满足不附加任何 feature

结合源码可见几个重要细节:

  • NVIDIA 分支要求CUDA Toolkit 与驱动同时存在,只有驱动时脚本会输出⚠️ NVIDIA GPU detected but CUDA not installed - falling back to CPU并返回null;
  • Vulkan 分支在 Linux 上要求vulkaninfo命令,同时强制要求VULKAN_SDK与BLAS_INCLUDE_DIRS两个环境变量都存在,缺一即回退 CPU;
  • 脚本将console.log重定向到 stderr,确保 stdout 只输出纯特征名(无换行),便于上游脚本干净地捕获结果;
  • macOS 分支单独处理:Apple Silicon 返回coreml(CoreML 内含 Metal),Intel Mac 返回metal。

常见场景对照表:

你的系统自动检测结果原因
全新 Linux 安装CPU-only未检测到 GPU SDK
NVIDIA GPU + 仅有驱动CPU-onlyCUDA Toolkit 未安装
NVIDIA GPU + CUDA ToolkitCUDA 加速✅完整检测成功
AMD GPU + ROCmHIPBlas 加速✅完整检测成功
仅有 Vulkan 驱动CPU-only缺少 Vulkan SDK 与环境变量
Vulkan SDK 已配置Vulkan 加速✅所有条件满足

关键认知:仅有 GPU 驱动是不够的,必须安装对应开发 SDK(CUDA Toolkit、ROCm 或 Vulkan SDK)才能真正启用加速。

2.3 NVIDIA CUDA 手动配置(中级)

前置条件:NVIDIA GPU,计算能力(compute capability)5.0 及以上。查询方式:

nvidia-smi --query-gpu=compute_cap --format=csv

Step 1:安装 CUDA Toolkit

# Ubuntu/Debian(CUDA 12.x) sudo apt install nvidia-driver-550 nvidia-cuda-toolkit # 验证安装 nvidia-smi # 显示 GPU 信息 nvcc --version # 显示 CUDA 版本

Step 2:按 GPU 计算能力构建

# 示例:RTX 3080 = 8.6 → 使用 "86" # 示例:GTX 1080 = 6.1 → 使用 "61" CMAKE_CUDA_ARCHITECTURES=75 \ CMAKE_CUDA_STANDARD=17 \ CMAKE_POSITION_INDEPENDENT_CODE=ON \ ./build-gpu.sh

三个环境变量的作用:

  • CMAKE_CUDA_ARCHITECTURES:针对你的具体 GPU 优化(把7.5转成75、8.6转成86等,去掉小数点);
  • CMAKE_CUDA_STANDARD=17:确保 C++17 兼容性;
  • CMAKE_POSITION_INDEPENDENT_CODE=ON:修复现代系统上的链接问题。

需要说明的是,frontend/dev-gpu.sh 在 Linux 下默认已导出CMAKE_CUDA_ARCHITECTURES=75、CMAKE_CUDA_STANDARD=17、CMAKE_POSITION_INDEPENDENT_CODE=ON;frontend/scripts/tauri-auto.js 也会在 Linux + CUDA 场景下注入同样的三个变量,因此多数情况下可省略手动设置,仅在需要针对特定 GPU 架构优化时显式覆盖。

2.4 Vulkan 配置(跨平台回退方案)

Vulkan 通用于 NVIDIA、AMD 和 Intel GPU,当 CUDA/ROCm 不可用时是良好选择。

# Ubuntu/Debian sudo apt install vulkan-sdk libopenblas-dev # Fedora sudo dnf install vulkan-devel openblas-devel # Arch Linux sudo pacman -S vulkan-devel openblas

配置环境变量(追加到~/.bashrc或~/.zshrc):

export VULKAN_SDK=/usr export BLAS_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu # 使配置生效 source ~/.bashrc

然后直接构建,脚本会自动检测并启用--features vulkan:

./build-gpu.sh

2.5 AMD ROCm 配置(仅 AMD GPU)

前置条件:支持 ROCm 的 AMD GPU(RX 5000 系列及以上、Radeon VII 等)。

# Ubuntu/Debian # 先添加 ROCm 软件源(以官方文档为准) sudo apt install rocm-smi hipcc # 设置环境 export ROCM_PATH=/opt/rocm # 验证 rocm-smi # 显示 GPU 信息 hipcc --version # 显示 ROCm 版本 # 构建 ./build-gpu.sh

2.6 手动覆盖加速方式(高级)

如果不信任自动检测结果,或想强制使用特定后端,可通过TAURI_GPU_FEATURE环境变量覆盖:

# 强制 CUDA(忽略自动检测) TAURI_GPU_FEATURE=cuda ./dev-gpu.sh TAURI_GPU_FEATURE=cuda ./build-gpu.sh # 强制 Vulkan TAURI_GPU_FEATURE=vulkan ./dev-gpu.sh TAURI_GPU_FEATURE=vulkan ./build-gpu.sh # 强制 ROCm(HIPBlas) TAURI_GPU_FEATURE=hipblas ./dev-gpu.sh TAURI_GPU_FEATURE=hipblas ./build-gpu.sh # 强制纯 CPU(用于测试) TAURI_GPU_FEATURE="" ./dev-gpu.sh TAURI_GPU_FEATURE="" ./build-gpu.sh # 强制 OpenBLAS(CPU 优化) TAURI_GPU_FEATURE=openblas ./dev-gpu.sh TAURI_GPU_FEATURE=openblas ./build-gpu.sh

该变量在 frontend/scripts/tauri-auto.js 中优先于自动检测读取:若已设置则直接采用(none表示纯 CPU),否则才调用auto-detect-gpu.js探测。dev-gpu.sh中也会在变量为空时自动执行检测脚本并回写该变量。

2.7 构建产物位置

构建成功后,AppImage 产物位于:

src-tauri/target/release/bundle/appimage/Meetily_<version>_amd64.AppImage

2.8 常见故障排查

"CUDA toolkit not found"

  • 修复:安装nvidia-cuda-toolkit,或设置CUDA_PATH环境变量;
  • 验证:nvcc --version应能正常工作。

"Vulkan detected but missing dependencies"

  • 修复:同时设置VULKAN_SDK与BLAS_INCLUDE_DIRS两个环境变量:
    export VULKAN_SDK=/usr export BLAS_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu

"AppImage build stripping symbols"

  • 修复:无需手动处理,build-gpu.sh已自动设置NO_STRIP=true;
  • 原因:防止缺失符号导致运行时错误。

构建成功但无 GPU 加速

  • 检查检测日志:观察构建输出中的 GPU 检测信息;
  • 验证命令:nvidia-smi(NVIDIA)或rocm-smi(AMD)应可执行;
  • 缺 SDK:需要安装开发工具包,而不仅仅是驱动。

2.9 加速模式速查矩阵与构建脚本内部流程

结合 docs/building_in_linux.md 的技术参考章节,各模式要求与预期加速效果对照如下(速度提升为文档给出的一般经验范围,实际效果取决于硬件与模型):

模式Feature 标志依赖条件加速类型相对 CPU 提升
CUDA--features cudanvidia-smi+(CUDA_PATH或nvcc)GPU约 5–10x
ROCm--features hipblasrocm-smi+(ROCM_PATH或hipcc)GPU约 4–8x
Vulkan--features vulkanvulkaninfo+VULKAN_SDK+BLAS_INCLUDE_DIRSGPU约 3–6x
OpenBLAS--features openblasBLAS_INCLUDE_DIRSCPU 优化约 1.5–2x
CPU(无)(无)纯 CPU1x(基准)

dev-gpu.sh与build-gpu.sh的内部流程一致:定位package.json→ 选择包管理器(pnpm优先)→ 调用 npm 脚本tauri:dev/tauri:build→ npm 脚本调用tauri-auto.js→auto-detect-gpu.js检测硬件 → 以检测到的--features标志构建 Tauri。此外,dev-gpu.sh会额外编译llama-helper侧车并把二进制以llama-helper-<target-triple>的命名复制到src-tauri/binaries(target triple 通过rustc -vV的host字段获取)。

关键环境变量汇总:

变量用途示例值
CUDA_PATHCUDA 安装目录/usr/local/cuda
ROCM_PATHROCm 安装目录/opt/rocm
VULKAN_SDKVulkan SDK 目录/usr
BLAS_INCLUDE_DIRSBLAS 头文件位置/usr/include/x86_64-linux-gnu
CMAKE_CUDA_ARCHITECTURESGPU 计算能力75(对应 compute 7.5)
CMAKE_CUDA_STANDARDCUDA 所用 C++ 标准17
CMAKE_POSITION_INDEPENDENT_CODE启用 PIC 便于链接ON
NO_STRIP阻止符号剥离(AppImage)true

三、macOS 平台构建

macOS 的构建流程被刻意简化,因为 GPU 加速(Metal)默认启用,无需额外配置。

Step 1:安装依赖

# 安装 Homebrew(如尚未安装) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 安装所需工具 brew install cmake node pnpm

Step 2:构建与运行

# 开发模式(带热重载) pnpm tauri:dev # 生产构建 pnpm tauri:build

应用会自动以 Metal GPU 加速构建。从源码看,frontend/src-tauri/Cargo.toml 的 macOS 目标依赖声明为whisper-rs = { version = "0.13.2", features = ["raw-api", "metal", "coreml"] },即 Metal 与 CoreML 在 macOS 上默认开启;而auto-detect-gpu.js在 Apple Silicon 上返回coreml(CoreML 内含 Metal),Intel Mac 返回metal,与之一致。另外需要留意:llama-helper(基于llama-cpp-2)不支持 CoreML,因此dev-gpu.sh在检测结果为coreml时会把llama-helper的编译特征自动降级为metal。

四、Windows 平台构建

Step 1:安装依赖

  • Node.js:从 nodejs.org 下载安装;
  • Rust:从 rust-lang.org/tools/install 安装;
  • Visual Studio Build Tools:在 Visual Studio Installer 中安装 "Desktop development with C++" 工作负载;
  • CMake:从 cmake.org/download 下载安装。

Step 2:构建与运行

# 开发模式(带热重载) pnpm tauri:dev # 生产构建 pnpm tauri:build

默认情况下,Windows 构建为纯 CPU 模式。要启用 GPU 加速,参见 GPU 加速指南。

从 frontend/src-tauri/Cargo.toml 可以看到平台相关的默认策略:Windows 目标的whisper-rs依赖自带vulkan特性,Linux 目标则不带任何默认加速特性;[features]中定义了cuda、vulkan、hipblas、openblas、openmp等可选特性,供高级用户手动覆盖。项目同时提供了 Windows 下的 PowerShell 辅助脚本(如frontend/build-gpu.ps1、frontend/dev-gpu.ps1)供选择使用。

五、关于加速后端的补充说明

  • Meetily 的转录加速基于whisper-rs库(版本 0.13.2),支持的加速后端包括CUDA(NVIDIA)、Metal(Apple Silicon 与现代 Intel Mac)、Core ML(Apple Silicon 的附加加速层)、Vulkan(跨平台,适用于现代 AMD/Intel GPU)与OpenBLAS(基于 CPU 的优化,相对纯 CPU 有明显提速);
  • llama-helper侧车基于llama-cpp-2(版本 0.1.128),其[features]仅提供metal、cuda、vulkan三个后端;其 release profile 使用lto = true、codegen-units = 1、opt-level = "s"(按体积优化以加快加载),这也是构建耗时较长的原因之一;
  • 若需手动指定后端而不依赖自动检测,可在frontend/src-tauri/Cargo.toml的[features]中调整默认特性(例如default = ["cuda"])后使用标准pnpm tauri:build构建,详细说明见 docs/GPU_ACCELERATION.md。

六、完整示例构建(Linux)

NVIDIA GPU(CUDA)

# 安装 sudo apt install nvidia-driver-550 nvidia-cuda-toolkit # 验证 nvidia-smi --query-gpu=compute_cap --format=csv # 构建(按你的 GPU 调整架构号) CMAKE_CUDA_ARCHITECTURES=86 \ # 86 仅示例,请按实际调整 CMAKE_CUDA_STANDARD=17 \ CMAKE_POSITION_INDEPENDENT_CODE=ON \ ./build-gpu.sh

AMD GPU(ROCm)

# 安装 ROCm(按发行版参考 AMD 官方文档) sudo apt install rocm-smi hipcc export ROCM_PATH=/opt/rocm # 构建 ./build-gpu.sh

任意 GPU(Vulkan)

# 安装 sudo apt install vulkan-sdk libopenblas-dev # 配置 export VULKAN_SDK=/usr export BLAS_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu # 构建 ./build-gpu.sh

无 GPU(纯 CPU)

# 直接构建即可,开箱即用 ./build-gpu.sh

七、相关参考文档

  • docs/BUILDING.md:跨平台源码构建主文档;
  • docs/GPU_ACCELERATION.md:GPU 加速后端与手动配置详解;
  • docs/building_in_linux.md:Linux 构建的补充技术参考(含加速矩阵与完整示例);
  • frontend/scripts/auto-detect-gpu.js:GPU 自动检测实现;
  • frontend/scripts/tauri-auto.js:自动注入 feature 并启动 Tauri 的 npm 包装脚本;
  • frontend/dev-gpu.sh:开发模式一键脚本(含llama-helper编译与侧车复制逻辑);
  • frontend/src-tauri/Cargo.toml:Rust 工程加速特性与平台默认配置;
  • llama-helper/Cargo.toml:本地 LLM 侧车及其特性定义。

【免费下载链接】meetilyPrivacy first, AI meeting assistant with 4x faster Parakeet/Whisper live transcription, speaker diarization, and Ollama summarization built on Rust. 100% local processing. no cloud required. Meetily (Meetly Ai - https://meetily.ai) is the #1 Self-hosted, Open-source Ai meeting note taker for macOS & Windows. Understand How to write meeting minutes项目地址: https://gitcode.com/GitHub_Trending/me/meetily

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询