Ubuntu/Linux 升级 CMake 版本

news2025/3/1 11:05:08

Ubuntu/Linux 升级 CMake 版本

背景

logo

在 Ubuntu 18.04 系统上默认的 CMake 版本为 3.10.2,当需要进行一些比较新的项目的编译时,比如说 iceoryx 的交叉编译,会遇到 CMake 版本不支持问题。类似下面的打印:

CMake Error at CMakeLists.txt:17 (cmake_minimum_required):
  CMake 3.16 or higher is required.  You are running version 3.10.2

这时我们需要升级系统中的 CMake,从 3.10.2 升级到 3.16+ 版本。

解决方案

在 CMake 网站的 Download 页面 Alternative Binary Releases 列表中提供了 Kitware’s Ubuntu packages 可替换的 APT 仓库 https://apt.kitware.com/。在 https://apt.kitware.com/ 网址中是 Kitware 维护的 CMake 可替换版本,根据网站提示选择合适的系统进行更新。

以下步骤可参考 apt.kitware.com 进行操作:

  1. 如果您使用的是最小 Ubuntu 镜像或 Docker 镜像,则可能需要安装以下软件包:

    sudo apt-get update
    sudo apt-get install -y gpg wget
    
  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. 将存储库添加到源列表并更新。

    Ubuntu Jammy Jellyfish (22.04):

    echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
    sudo apt-get update
    

    Ubuntu Focal Fossa (20.04):

    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
    sudo apt-get update
    

    Ubuntu Bionic Beaver (18.04):

    echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
    sudo apt-get update
    
  4. 安装 kitware-archive-keyring 软件包,以确保您的钥匙环在我们轮循钥匙时保持最新:

    sudo rm /usr/share/keyrings/kitware-archive-keyring.gpg
    sudo apt-get install kitware-archive-keyring
    
  5. 作为可选步骤,如果您想订阅除生产版本之外的候选版本,可以将我们的候选版本存储库添加到您的源中。

    Ubuntu Jammy Jellyfish (22.04):

    echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy-rc main' | sudo tee -a /etc/apt/sources.list.d/kitware.list >/dev/null
    sudo apt-get update
    

    Ubuntu Focal Fossa (20.04):

    echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal-rc main' | sudo tee -a /etc/apt/sources.list.d/kitware.list >/dev/null
    sudo apt-get update
    

    Ubuntu Bionic Beaver (18.04):

    echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic-rc main' | sudo tee -a /etc/apt/sources.list.d/kitware.list >/dev/null
    sudo apt-get update
    

    请注意,如果您添加了候选版本存储库,您仍然需要添加主存储库,因为候选版本存储存储库本身不提供生产版本。

  6. 现在,您可以从我们的 APT 存储库安装任何软件包。例如,尝试安装 cmake 包:

    sudo apt install -y cmake
    

提示:使用 Synaptic 工具查看待更新的 cmake 版本,关于 Synaptic 的使用可参考「Ubuntu 软件包管理利器 - 新立得 (Synaptic)」。

版本验证

安装 CMake 包之后,可以通过 cmake --version 命令查看版本信息。

$ cmake --version
cmake version 3.25.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

欢迎关注我的公众号:飞翔的小黄鸭
也许会发现不一样的风景


△ \triangle 交叉编译 iceoryx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/379418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

各种产品图的画法

经常看到网上有人问,产品经理要画哪些图,怎么画流程图等关于画图的问题。确实,画图是产品经理必备的硬核技能。然而,画图又不仅仅是画几个图而已。做产品没有统一、标准的规范指导,容易让人为了画图而画图。甚至&#…

机器学习笔记之狄利克雷过程(一)基本介绍

机器学习笔记之狄利克雷过程——基本介绍引言回顾:高斯混合模型狄利克雷过程——引出引言 从本节开始,将介绍狄利克雷过程。 回顾:高斯混合模型 高斯混合模型(Gaussian Mixture Model,GMM\text{Gaussian Mixture Model,GMM}Gaussian Mixtu…

【吃透Js】深入学习浅拷贝和深拷贝

一、JavaScript数据类型原始类型对象类型二、原始类型和对象类型的区别1.原始类型2.引用类型3.复制4.比较5.值传递三、浅拷贝概念实现方法四、深拷贝概念五、浅拷贝、深拷贝和赋值的区别浅拷贝和赋值六、小结想要真正搞明白深浅拷贝,你必须要熟练掌握赋值、对象在内…

港科夜闻|香港科大与中国医药创新促进会共建创新研究平台,推动大湾区医药创新发展...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大与中国医药创新促进会共建创新研究平台,推动大湾区医药创新发展。香港科技大学与中国医药创新促进会2月27日签署合作备忘录,成立「大湾区生物医药国际创新中心」及「大湾区生物医药发展政策研…

【论文导读】Towards Unsupervised Domain Generalization

之前看到过的一篇论文,挺有意思的,虽然查到了有讲解的博客,但是不太符合我的思考逻辑 于是自己梳理一下。 CVPR 2022丨清华大学提出:无监督域泛化 (UDG)_我爱计算机视觉的博客-CSDN博客 方法引入: 针对现有的处理域…

苹果笔可以不买原装吗?开学必备性价比电容笔

在当今的时代,电容笔日益普及,而且相关的功能也逐渐完善。因此,在使用过程中,怎样挑选一款性价比比较高的电容笔成为大家关心的焦点。随着电容笔的普及,更好更便宜的电容笔成为了一种趋势。那么,哪个品牌的…

[ 云计算入门与实战 - AWS ] 在控制台创建 Amazon EC2 实例

本章节主要介绍在 AWS 控制台窗口 如何创建一台 Amazon EC2 实例。 文章目录写在前面开始创建前进入控制台并启动 EC2 实例服务创建 EC2 实例详细步骤步骤 1:为所要创建的 EC2 实例个体命名步骤 2:选择 AMI步骤 3:选择实例类型步骤 4&#xf…

【线程池的使用规范、线程池的7个参数、4种拒绝策略、线程池的5种状态、线程池的执行流程】

一.线程池的使用规范 阿里巴巴开发手册规定,线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让开发人员更加明确线程池的运行规则,规避资源耗尽的风险。 说明:Executors 返回的…

EndNote20 自动生成毕业论文参考文献

软件版本: EndNote 20 字体:Chinese Standard GB/T 7714 去谷歌学术下载Endnote格式的enw文件 在EndNote中 File>New… 新建Libaray Tools>Output Styles>Open Style Manager… 勾选Chinese std GBT7714(numeric) Tools>Output Styles>…

CSS背景属性之颜色渐变

颜色渐变 颜色渐变其实在网页设计中并不是特别常见, 但也不可避免的会出现导航栏是渐变色这种情况或者别的不是单一颜色的情况, 例如:这样的设计解决方案并不是只可以使用颜色渐变,我们可以使用两个div拼接,将文字放…

如果坚定了想要进入网络安全领域的决心,应该怎样学习呢?

1、建立科学的学习路径 如果你原本从事程序开发,可以选择Web安全/渗透测试方向入门,一是市场需求量高,二则是发展相对成熟,入门比较容易。一定要根据自身的知识结构建立科学的学习路径,只有学到一定程度、或者有了一定…

Function Mesh:流处理任务的 Serverless 化实践

文章摘要本文整理自 ApacheCon Asia 上,StreamNative 工程师付睿的分享《Use Apache Pulsar Functions in a Cloud-Native way》。本文将介绍在云原生环境中使用 Pulsar Functions 的实践,以及基于 Pulsar Functions 和 Kubernetes 的项目 Function Mesh…

Redis实现高可用

怎么实现Redis的高可用?我们在项目中使用Redis,肯定不会是单点部署Redis服务的。因为,单点部署一旦宕机,就不可用了。为了实现高可用,通常的做法是,将数据库复制多个副本以部署在不同的服务器上&#xff0c…

tensorflow2.4--1.框架介绍

前言 虽然1.x版本tensorflow有很多项目都基于此构建,然而随着2.x版本的推出,很多架构已经发生了改变,代码发生了改变,同时很多模组已经废弃不用或者更新,tensorflow1.x已经不能再兼容最新的项目,与时俱进是必要的,因此…

【图像处理】数字图像处理基础(分辨率,像素,显示...)

Table of Contents1.数字图像处理基础1.1 图像表示1.1.1 图像成像模型1.1.2 数字图像的表示a.图像采样b.图像灰度的量化c.算比特数1.2 分辨率1.2.1 空间分辨率1.2.2 灰度分辨率1.3 像素间的关系1.3.1 像素邻域a.4邻域b.4对角邻域c.8邻域1.3.2 像素邻接1.3.3 像素连通1.3.4 像素…

【C语言航路】第十五站:程序环境和预处理

目录 一、程序的翻译环境和执行环境 二、编译和链接 1.翻译环境 2.编译本身也分为几个阶段 3.运行环境 三、预处理 1.预定义符号 2.#define 1.#define定义标识符 2.#define定义宏 3.#define 替换规则 4.#和## 5.带副作用的宏参数 6.宏和函数的对比 7.命名约定 …

Android Qcom Display学习(十二)

该系列文章总目录链接与各部分简介: Android Qcom Display学习(零) 本章主要是基于高通平台上dump出GPU渲染 or GPU合成 or HWC合成的GraphicBuffer的数据。 起初是在B站上看到这么一个视频,能dump出每个Layer的数据显示系统原理以及图形系统调试&#…

Delphi 中 FireDAC 数据库连接(设置选项)

描述了为什么选项集使FireDAC成为一个灵活的数据库框架以及如何使用这些选项。FireDAC提供了大量的选项,这些选项被组织成一个分层的选项系统,大多数选项可以保留其默认值。一、议题TopicDescription数据类型映射FireDAC提供了一个灵活的可调整的数据类型映射系统&a…

command-line变成-bash-4.2

故障描述: 故障诊断: 分析用户创建的过程: Useradd jfedu1命令默认创建用户jfedu1,会根据如下步骤进行操作: 读取/etc/default/useradd,根据配置文件执行创建操作; 在/etc/passwd文件中添加…

Python 之 Pandas merge() 函数、set_index() 函数、drop_duplicates() 函数和 tolist() 函数

文章目录一、merge() 函数1. inner2. left 和 right3. outer二、set_index() 函数三、drop_duplicates() 函数四、tolist() 函数五、视频数据分析案例1. 问题要求2. 解决过程在最开始,我们先导入常规的 numpy 和 pandas 库。 import numpy as np import pandas as …