最稳妥方式是用官网预编译tar.gz包安装:下载对应架构包(如cmake-3.29.7-linux-x86_64.tar.gz),解压至/opt/cmake-3.29.7,用sudo ln -sf创建指向/usr/local/bin/cmake的软链接,并确保该路径在$PATH中靠前。

直接用预编译压缩包安装 CMake 是 Linux 下最稳妥、版本可控的方式,尤其适合项目有明确最低版本要求(比如 cmake_minimum_required(VERSION 3.20))时。它绕过了系统包管理器的旧版本限制,也省去了源码编译的依赖和耗时。
下载对应架构的 linux-x86_64.tar.gz 包
去 cmake.org/download/ 找「Binary distributions」→「Linux」→ 选带 linux-x86_64.tar.gz 后缀的文件(别选 source 或 win64)。例如:cmake-3.29.7-linux-x86_64.tar.gz。确认你的系统是 64 位:uname -m 输出 x86_64 才匹配。
解压后不建议直接复制进 /usr/bin
常见错误是执行 sudo cp -r bin/* /usr/bin,这会覆盖系统原有 cmake,且后续升级难回退。更安全的做法:
- 解压到固定位置,如
/opt/cmake-3.29.7:tar -zxvf cmake-3.29.7-linux-x86_64.tar.gz -C /opt/
- 用软链接统一入口:
sudo ln -sf /opt/cmake-3.29.7/bin/cmake /usr/local/bin/cmake
- 验证:
cmake --version应输出3.29.7,which cmake应指向/usr/local/bin/cmake
PATH 冲突时优先级怎么判断?
当 cmake --version 仍显示旧版本,说明 shell 找到了别的 cmake。按实际查找顺序排查:
-
which cmake看当前生效路径 -
echo $PATH检查顺序:排在前面的目录优先命中 - 常见干扰源:
/usr/bin/cmake(apt 安装)、~/.local/bin/cmake(pip 安装)、/snap/bin/cmake(snap 安装) - 临时切换版本:直接调用全路径,如
/opt/cmake-3.29.7/bin/cmake --version
卸载不用删文件,改软链接就行
换版本时不需要 rm -rf /opt/cmake-*。只需更新软链接指向新目录:
sudo ln -sf /opt/cmake-3.31.0/bin/cmake /usr/local/bin/cmake。旧版本文件留着,随时可切回——这对 CI 环境或多人协作机器特别实用。
真正容易被忽略的是软链接的 target 必须是绝对路径,且 /usr/local/bin 要在 $PATH 中靠前;否则即使链接存在,shell 也可能跳过它去找别的 cmake。


















