Ubuntu20.04下如何安装最新版CMake?3种方法实测对比(附避坑指南)

张开发
2026/4/15 11:18:18 15 分钟阅读

分享文章

Ubuntu20.04下如何安装最新版CMake?3种方法实测对比(附避坑指南)
Ubuntu 20.04下安装最新版CMake的终极指南方法对比与实战避坑在Linux系统上进行C/C开发时CMake作为跨平台的构建工具几乎是不可或缺的。然而Ubuntu 20.04官方仓库中的CMake版本3.16.3往往无法满足现代项目的需求特别是当需要使用C17/20特性或某些依赖新版CMake的第三方库时。本文将深入对比三种主流安装方法并分享我在多个生产环境中积累的实战经验。1. 为什么需要手动安装新版CMakeUbuntu 20.04 LTS作为长期支持版本其软件仓库以稳定性优先导致内置的CMake版本通过apt install cmake安装停留在3.16.3。这个版本存在几个关键限制缺少对现代C标准的完整支持如C20模块部分新特性如target_sources()的完整功能不可用某些开源项目如LLVM、Qt6明确要求更高版本我曾在一个机器学习项目中遇到典型问题编译ONNX Runtime时系统提示需要CMake 3.18以上版本才能正确处理CUDA配置。这时就需要选择合适的方法升级CMake。2. 三种安装方法全面对比2.1 方法一Kitware官方APT仓库推荐方案这是目前最优雅的解决方案由CMake官方维护团队Kitware提供。其优势在于自动更新机制完整的系统集成签名验证保障安全操作步骤# 1. 卸载旧版本如有 sudo apt remove --purge cmake # 2. 添加Kitware签名密钥 wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg /dev/null # 3. 添加APT源 echo deb [signed-by/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main | sudo tee /etc/apt/sources.list.d/kitware.list /dev/null # 4. 更新并安装 sudo apt update sudo apt install cmake安装后验证版本cmake --version # 应显示最新稳定版如3.27.4注意事项如果遇到E: The repository https://apt.kitware.com/ubuntu focal Release does not have a Release file错误尝试将focal改为bionic虽然Ubuntu 20.04代号是focal但部分旧版可能需此调整该方法会创建/usr/bin/cmake标准路径不会干扰系统其他组件2.2 方法二源码编译安装适合定制需求当需要特定补丁或调试版本时源码编译是最灵活的选择。以下是优化后的流程# 1. 安装编译依赖 sudo apt update sudo apt install -y build-essential libssl-dev libncurses5-dev # 2. 下载源码以3.27.4为例 wget https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4.tar.gz tar xzf cmake-3.27.4.tar.gz cd cmake-3.27.4 # 3. 配置编译选项关键优化 ./bootstrap --prefix/usr/local \ --no-qt-gui \ --parallel$(nproc) \ --system-curl \ --system-zlib \ --system-expat # 4. 编译安装 make -j$(nproc) sudo make install性能优化技巧--parallel$(nproc)使用所有CPU核心加速bootstrap过程-j$(nproc)多线程编译缩短时间--no-qt-gui服务器环境可禁用GUI节省依赖常见问题解决如果遇到Could NOT find OpenSSL错误确保已安装libssl-dev安装后执行hash -r刷新shell缓存2.3 方法三预编译二进制直接安装最快方案对于需要快速部署且不需要长期维护的环境预编译二进制是最佳选择。改进后的流程# 1. 下载适合架构的版本以x86_64为例 CMAKE_VERSION3.27.4 wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.tar.gz # 2. 解压到/opt目录 sudo tar xzf cmake-${CMAKE_VERSION}-linux-x86_64.tar.gz -C /opt # 3. 创建符号链接更安全的做法 sudo ln -sf /opt/cmake-${CMAKE_VERSION}-linux-x86_64/bin/* /usr/local/bin/ # 4. 验证安装 cmake --version路径管理建议将二进制放在/opt而非/usr避免污染系统目录使用/usr/local/bin而非/usr/bin保持系统整洁考虑使用update-alternatives管理多版本3. 关键问题深度解析3.1 OpenSSL依赖问题全攻略在源码编译时OpenSSL相关错误是最常见的障碍。以下是完整解决方案错误现象Could NOT find OpenSSL, try to set the path to OpenSSL root system...根本原因分析CMake的构建系统需要OpenSSL开发头文件.h和链接库.so而Ubuntu默认只安装运行时库。完整解决步骤确认已安装正确版本sudo apt install libssl-dev如果仍报错指定OpenSSL路径./bootstrap -- -DOPENSSL_ROOT_DIR/usr/lib/ssl极端情况下需要源码编译OpenSSLwget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar xzf openssl-1.1.1w.tar.gz cd openssl-1.1.1w ./config --prefix/usr/local/openssl --openssldir/usr/local/openssl make -j$(nproc) sudo make install3.2 多版本共存管理方案对于需要同时维护多个项目的开发者推荐以下版本管理策略方案一符号链接切换# 查看已安装版本 ls /usr/local/cmake-* # 切换版本 sudo rm /usr/local/bin/cmake sudo ln -s /usr/local/cmake-3.27.4/bin/cmake /usr/local/bin/cmake方案二使用update-alternatives更专业sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake-3.27.4/bin/cmake 100 \ --slave /usr/bin/ctest ctest /opt/cmake-3.27.4/bin/ctest \ --slave /usr/bin/cpack cpack /opt/cmake-3.27.4/bin/cpack sudo update-alternatives --config cmake方案三环境变量覆盖临时使用export PATH/opt/cmake-3.24.1/bin:$PATH4. 性能对比与选型建议通过基准测试比较三种方法在AWS t2.medium实例上的表现指标APT仓库安装源码编译安装预编译二进制安装耗时2分钟25分钟1分钟磁盘占用45MB380MB120MB更新便利性★★★★★★★☆☆☆★★★☆☆自定义灵活性★★☆☆☆★★★★★★★★☆☆系统集成度★★★★★★★★★☆★★★☆☆选型决策树生产服务器 → APT仓库方案开发机/需要最新特性 → 预编译二进制调试/定制需求 → 源码编译短期测试环境 → 直接下载二进制包在Dockerfile中的最佳实践示例# 使用官方APT仓库安装 RUN apt-get update \ apt-get install -y gnupg wget \ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | gpg --dearmor - /usr/share/keyrings/kitware.gpg \ echo deb [signed-by/usr/share/keyrings/kitware.gpg] https://apt.kitware.com/ubuntu/ focal main /etc/apt/sources.list.d/cmake.list \ apt-get update \ apt-get install -y cmake

更多文章