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 推理。构建的核心诉求是自动探测硬件能力并选择合适的加速后端,其完整调用链为:
dev-gpu.sh/build-gpu.sh(Bash 包装脚本)先确认package.json位置(项目根目录或frontend/均可),再检测包管理器(优先pnpm,回退npm);- 调用 frontend/scripts/auto-detect-gpu.js 探测 GPU 能力,输出特征名(如
cuda、hipblas、vulkan、openblas); - 以
--features <特征>编译llama-helper侧车(debug 或 release); - 将编译产物复制到
src-tauri/binaries目录并附带 target triple 命名; - 通过
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 CUDA | nvidia-smi存在 且(CUDA_PATH或nvcc存在) | --features cuda |
| 2️⃣ | AMD ROCm | rocm-smi存在 且(ROCM_PATH或hipcc存在) | --features hipblas |
| 3️⃣ | Vulkan | vulkaninfo存在 且VULKAN_SDK与BLAS_INCLUDE_DIRS均已设置 | --features vulkan |
| 4️⃣ | OpenBLAS | BLAS_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-only | CUDA Toolkit 未安装 |
| NVIDIA GPU + CUDA Toolkit | CUDA 加速✅ | 完整检测成功 |
| AMD GPU + ROCm | HIPBlas 加速✅ | 完整检测成功 |
| 仅有 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=csvStep 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.sh2.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.sh2.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.AppImage2.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 cuda | nvidia-smi+(CUDA_PATH或nvcc) | GPU | 约 5–10x |
| ROCm | --features hipblas | rocm-smi+(ROCM_PATH或hipcc) | GPU | 约 4–8x |
| Vulkan | --features vulkan | vulkaninfo+VULKAN_SDK+BLAS_INCLUDE_DIRS | GPU | 约 3–6x |
| OpenBLAS | --features openblas | BLAS_INCLUDE_DIRS | CPU 优化 | 约 1.5–2x |
| CPU | (无) | (无) | 纯 CPU | 1x(基准) |
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_PATH | CUDA 安装目录 | /usr/local/cuda |
ROCM_PATH | ROCm 安装目录 | /opt/rocm |
VULKAN_SDK | Vulkan SDK 目录 | /usr |
BLAS_INCLUDE_DIRS | BLAS 头文件位置 | /usr/include/x86_64-linux-gnu |
CMAKE_CUDA_ARCHITECTURES | GPU 计算能力 | 75(对应 compute 7.5) |
CMAKE_CUDA_STANDARD | CUDA 所用 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 pnpmStep 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.shAMD 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),仅供参考