当前位置: 首页 > article >正文

Ubuntu:20.04更新cmake到更高版本

从输出信息可以看出,您当前的系统中已经安装了 cmake,但版本是 3.16.3,而您的项目需要 CMake 3.18 或更高版本。默认情况下,Ubuntu 20.04 的官方软件仓库中提供的 CMake 版本较低(如 3.16.3),因此您需要通过其他方式安装更高版本的 CMake。

以下是解决此问题的具体步骤:


方法 1:使用 Kitware 官方仓库安装最新版本的 CMake

Kitware 提供了一个官方的 APT 仓库,您可以从中安装最新版本的 CMake。

步骤:
  1. 更新系统包索引:

    sudo apt update
    
  2. 安装必要的工具:

    sudo apt install -y software-properties-common wget
    
  3. 添加 Kitware 的 GPG 密钥和 APT 仓库:

    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
    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
    

    注意: focal 是 Ubuntu 20.04 的代号。

  4. 更新包索引并安装最新版本的 CMake:

    sudo apt update
    sudo apt install cmake
    
  5. 验证安装的 CMake 版本:

    cmake --version
    

    您应该会看到一个高于 3.18 的版本号。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


方法 2:手动下载并安装最新版本的 CMake

如果您不想使用 Kitware 的 APT 仓库,也可以手动下载并安装最新版本的 CMake。

步骤:
  1. 从 CMake 官方网站下载最新版本的二进制文件:
    访问 CMake 下载页面 或直接使用以下命令下载:

    wget https://github.com/Kitware/CMake/releases/download/v3.27.5/cmake-3.27.5-linux-x86_64.tar.gz
    

    注意: 请根据需要替换 v3.27.5 为最新的版本号。

  2. 解压下载的文件:

    tar -xvzf cmake-3.27.5-linux-x86_64.tar.gz
    
  3. 将解压后的文件移动到合适的位置(例如 /opt/cmake):

    sudo mv cmake-3.27.5-linux-x86_64 /opt/cmake
    
  4. 创建符号链接以便在终端中使用:

    sudo ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
    
  5. 验证安装的 CMake 版本:

    cmake --version
    

方法 3:使用 Snap 安装最新版本的 CMake

Ubuntu 20.04 支持 Snap 包管理器,您可以通过 Snap 安装最新版本的 CMake。

步骤:
  1. 安装 Snap(如果尚未安装):

    sudo apt install snapd
    
  2. 通过 Snap 安装 CMake:

    sudo snap install cmake --classic
    
  3. 验证安装的 CMake 版本:

    cmake --version
    

方法 4:在 Docker 容器中安装更高版本的 CMake

如果您正在使用 Docker 容器,并且容器镜像中的 CMake 版本较低,您可以在 Dockerfile 中安装更高版本的 CMake。例如:

# 使用基础镜像
FROM ubuntu:20.04# 更新包索引并安装必要工具
RUN apt update && apt install -y wget software-properties-common# 添加 Kitware 官方仓库并安装最新版本的 CMake
RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null && \echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main" | tee /etc/apt/sources.list.d/kitware.list >/dev/null && \apt update && apt install -y cmake# 验证 CMake 版本
RUN cmake --version

构建并运行容器后,您将拥有最新版本的 CMake。


总结

由于 Ubuntu 20.04 默认的软件仓库中提供的 CMake 版本较低,您需要通过 Kitware 官方仓库、手动安装或 Snap 来获取更高版本的 CMake。推荐使用 方法 1(Kitware 官方仓库),因为它简单且易于维护。

完成安装后,请重新运行您的脚本,确保问题已解决。如果仍有问题,请提供更多信息以便进一步排查。

相关文章:

Ubuntu:20.04更新cmake到更高版本

从输出信息可以看出,您当前的系统中已经安装了 cmake,但版本是 3.16.3,而您的项目需要 CMake 3.18 或更高版本。默认情况下,Ubuntu 20.04 的官方软件仓库中提供的 CMake 版本较低(如 3.16.3),因…...

php 系统命令执行及绕过

文章目录 php的基础概念php的基础语法1. PHP 基本语法结构2. PHP 变量3.输出数据4.数组5.超全局变量6.文件操作 php的命令执行可以执行命令的函数命令执行绕过利用代码中命令(如ls)执行命令替换过滤过滤特定字符串神技:利用base64编码解码的绕…...

【Java】泛型与集合篇 —— Set 接口

目录 Set 接口及实现类HashSet 类特点内部实现构造方法LinkedHashSet 类基本概念特点构造方法常用方法适用场景用 Set 对象实现集合运算TreeSet 类特性构造方法常用方法注意事项对象顺序自然排序定制排序注意事项Set 接口及实现类 HashSet 类 HashSet 是 Java 集合框架中 Set…...

基于YOLOv8的人脸识别系统

文章目录 一.前言 二.原理阐述 三.源代码 四.代码改进 五.流程概述 一.前言 原开源项目是对于某时段校园门口学生出入的视频,使用YOLOv8目标检测算法以及yolov8l-face模型将目标换算成只检测人脸, 通过该模型中的track技术实现检测出的人脸进行自动跟踪, 通过跟踪到的…...

HBuilderX中,VUE生成随机数字,vue调用随机数函数

Vue 中可以使用JavaScript的Math.random() 函数生成随机数,它会返回 0 到 1 之间的浮点数, 如果需要0到1000之前的随机数,可以对生成的随机数乘以1000,再用js的向下取整函数Math.floor() 。 let randNum Math.random(); // 生成…...

论文笔记-WSDM2024-LLMRec

论文笔记-WSDM2024-LLMRec: Large Language Models with Graph Augmentation for Recommendation LLMRec: 基于图增强的大模型推荐摘要1.引言2.前言2.1使用图嵌入推荐2.2使用辅助信息推荐2.3使用数据增强推荐 3.方法3.1LLM作为隐式反馈增强器3.2基于LLM的辅助信息增强3.2.1用户…...

计算四个锚点TOA定位中GDOP的详细步骤和MATLAB例程

该MATLAB代码演示了在三维空间中,使用四个锚点的TOA(到达时间)定位技术计算几何精度衰减因子(GDOP)的过程。如需帮助,或有导航、定位滤波相关的代码定制需求,请联系作者 文章目录 DOP计算原理MATLAB例程运行结果示例关键点说明扩展方向另有文章: 多锚点Wi-Fi定位和基站…...

Lookup Join显著增强,Paimon1.0版本如何做的?

Hi,大家好,我们又满血复活了。 2025年开年更新频率不快,一方面是大模型如火如荼,也一直在补相关知识;另外一方面,新的一年里身体健康被我摆到了第一位,不会像前几年那么卷了。 后续我们的更新会…...

【Golang学习之旅】如何在Go语言中使用Redis实现分布式锁,并解决锁过期导致的并发问题?

文章目录 前言1. 分布式锁的基本原理1.1 锁过期导致并发问题的解决: 2. Go实现分布式锁3. 代码实现分布式锁3.1 安装Go-Redis包3.2 创建分布式锁工具函数3.3 代码解析 4. 如何避免锁过期导致的并发问题4.1 延长锁的有效期4.2 利用Redis的WATCH命令(乐观锁…...

Vue前端开发-Vant组件之Button组件

Vant 有丰富的UI组件,而基础组件是全部组件的核心,基础组件中将常用的元素做了二次的开发,封装成Vant格式组件,如按钮、图片和布局等,这些封装后的Vant组件,提供了更多面向实际应用的属性和事件&#xff0c…...

DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方DeepSeek接入)

前言 在当今数字化时代,AI编程助手已成为提升开发效率的利器。DeepSeek作为一款强大的AI模型,凭借其出色的性能和开源免费的优势,成为许多开发者的首选。今天,就让我们一起探索如何将DeepSeek接入PyCharm,实现高效、智…...

【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)

🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 ​ Linux网络编程笔记: https://blog.cs…...

健康养生:从生活细节开启活力之旅

在忙碌的现代生活里,健康养生不再是一个抽象概念,而是关乎生活质量的关键。其实,只要掌握日常养生要点,就能轻松开启活力满满的健康生活。 饮食是健康的基石。每日饮食需遵循 “彩虹原则”,摄入多种颜色食物。早餐时&…...

DeepSeek + Mermaid编辑器——常规绘图

下面这张图出自:由清华大学出品的 《DeepSeek:从入门到精通》。 作为纯文本生成模型,DeepSeek虽不具备多媒体内容生成接口,但其开放式架构允许通过API接口与图像合成引擎、数据可视化工具等第三方系统进行协同工作,最终…...

DevOps自动化部署详解:从理念到实践

在软件开发日益快速迭代的今天,如何以高效、稳定且可重复的方式将代码变更从开发环境自动部署到生产环境成为企业竞争的重要因素。DevOps 正是在这一背景下应运而生,它打破开发、测试、运维之间的壁垒,通过自动化工具和流程,实现持…...

【拥抱AI】GPT Researcher的诞生

一、GPT Researcher 研究过程总结 GPT Researcher 是一个开源的自主智能体,旨在通过利用人工智能技术实现高效、全面且客观的在线研究。它通过一系列创新的设计和优化,解决了传统研究工具(如 AutoGPT)中存在的问题,如…...

Redis7——基础篇(三)

前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二) 接上期内容:上期完成了Redis的基本…...

ES12 weakRefs的用法和使用场景

ES12 (ECMAScript 2021) 特性总结:WeakRef 1. WeakRef 概述 描述 WeakRef 是 ES12 引入的一个新特性,用于创建对对象的弱引用。弱引用不会阻止垃圾回收器回收对象,即使该对象仍然被弱引用持有。WeakRef 通常与 FinalizationRegistry 结合使…...

【Elasticsearch】搜索时分片路由

Elasticsearch 的Search Shard Routing(搜索分片路由)是一个核心机制,用于在分布式环境中高效地分发和执行搜索请求,确保查询能够快速、准确地返回结果,同时充分利用集群资源并保持系统的高可用性。以下是结合上述内容…...

MySQL登录问题总结

不管何种数据库,使用的第一步都是先登录。 MySQL命令行登录语句:mysql -u username -P port -p -D database_name 登录MySQL的报错一般从报错信息都能得到反馈,常见报错原因分析如下,实例中的以test用户为例,登录环境为…...

一些耳朵起茧子的名词解释

1 web应用 1.1 web应用的概念 Web应用(Web Application) 是一种通过浏览器访问的软件程序,它运行在服务器上,用户通过网络(如互联网或内网)与它进行交互。与传统网站(主要提供静态内容&#x…...

Redis 持久化:从零到掌握

Redis 作为一款广泛使用的内存数据库,虽然核心功能是基于内存提供高性能的数据存取,但在实际应用中,数据的持久化是不可忽视的。毕竟,内存中的数据一旦出现故障或重启,就会面临数据丢失的风险。因此,Redis …...

Mybatis MyBatis框架的缓存 一级缓存

1. 缓存的概念 缓存的概念 在内存中临时存储数据,速度快,可以减少数据库的访问次数。经常需要查询,不经常修改的数据,不是特别重要的数据都适合于存储到缓存中。 2.Mybatis缓存 mybatis包含了一个非常强大的查询缓存特性&#…...

第1章大型互联网公司的基础架构——1.6 RPC服务

你可能在1.1节的引言中注意到业务服务层包括HTTP服务和RPC服务,两者的定位不一样。一般来说,一个业务场景的核心逻辑都是在RPC服务中实现的,强调的是服务于后台系统内部,所谓的“微服务”主要指的就是RPC服务;而HTTP服…...

多个用户如何共用一根网线传输数据

前置知识 一、电信号 网线(如以太网线)中传输的信号主要是 电信号,它携带着数字信息。这些信号用于在计算机和其他网络设备之间传输数据。下面是一些关于网线传输信号的详细信息: 1. 电信号传输 在以太网中,数据是…...

idea-gradle打包运行配置

最近接触了一个项目,使用gradle做为构建工具,这里记录一波,毕竟平时使用的都是maven idea 配置 这里有个坑,Gradle Wrapper,配置的地址gradle下载超时 这个配置修改成阿里的 第一张 第二张 第二张配置的jvm貌似没啥用…...

(新版本onenet)stm32+esp8266/01s mqtt连接onenet上报温湿度和远程控制(含小程序)

物联网实践教程:微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制 远程上报和接收数据——汇总 前言 之前在学校获得了一个新玩意:ESP-01sWIFI模块,去搜了一下这个小东西很有玩点,远程控制LED啥的,然后我就想…...

一键部署开源DeepSeek并集成到钉钉

一键部署开源DeepSeek并集成到钉钉 简介: DeepSeek发布了两款先进AI模型V3和R1,分别适用于对话AI、内容生成及推理任务。由于官方API流量限制,阿里云推出了私有化部署方案,无需编写代码即可完成部署,并通过计算巢AppF…...

【爬虫基础】第一部分 网络通讯 P1/3

前言 1.知识点碎片化:每个网站实现的技术相似但是有区别,要求我们根据不同的网站使用不同的应对手段。主要是常用的一些网站爬取技术。 2.学习难度:入门比web简单,但后期难度要比web难,在于爬虫工程师与网站开发及运维…...

ES10中Object.fromEntries(),trimStart() ,trimend()的使用方法和使用场景例子

ES10(ECMAScript 2019)新特性总结 ES10(ECMAScript 2019)引入了一些新的方法,增强了 JavaScript 的灵活性和易用性。以下是 Object.fromEntries(),trimStart() 和 trimEnd() 的使用方法、使用场景以及例子…...