ubuntu更新Cmake
CMake
- 先验知识
- 创建软链接
- 如何删除符号链接
- 如何找出失效链接并将其删除
- PATH 优先级
- 查看当前CMake命令的位置
- 高版本 CMake 安装
- 参考
先验知识
创建软链接
ln -s <path to the file/folder to be linked> <the path of the link to be created>
ln 是链接命令,-s 指定此链接为软链接,-s 也可以写为 -symbolic。
ln 命令默认会创建硬链接。
path to the file (or folder) 声明了链接目标,即想要为其创建快捷方式的文件或目录。
path to link 即链接(快捷方式)名称。
\;
如
ln -s /home/james/transactions.txt trans.txt
执行这个命令之后,就可以通过 trans.txt 来访问 /home/james/transactions.txt。对于 trans.txt 的修改会体现到源文件上。
如何删除符号链接
在删除符号链接之前,需要确认这个文件或文件夹确实是符号链接,以免误删源文件。
ls -l <path-to-assumed-symlink>
如:
ls -l /usr/local/bin

使用 rm 删除符号链接
正如我们所见,符号链接只是一种指向源文件(或目录)的文件(或目录)。只要删除链接文件就可以解除这种关系。
rm <path-to-symlink>
如
rm trans.txt
注意,试图执行 rm trans.txt/ 会引发错误,因为 Linux 会把 trans.txt/ 当成目录来处理,要想删除目录还需要提供 r 和 f 等参数,然而这并不是我们想要的。虽然符号链接有可能是文件夹形式的,但我们只需要关心它的名字。
如何找出失效链接并将其删除
当源文件(或目录)被移动或者被删除时,指向它的符号链接就会失效。
如果把 “transactions.txt” 从 /home/james 移动到 /home/james/personal,“trans.txt” 这个链接就会失效。之后尝试访问 “trans.txt” 会引发错误:“No such file or directory”。
如果发现失效的链接,可以很轻松地将其删除。以下方法可以很方便地找出失效链接:
find /home/james -xtype l
这个命令会列出 james 目录下各种类型(如:文件、目录及子目录)的所有失效链接。
传入 -delete 参数就可以将它们删除:
find /home/james -xtype l -delete
PATH 优先级
echo $PATH
$PATH是一个包含多个目录路径的字符串,不同的路径之间使用冒号(:)分隔。包括在 PATH 环境变量中,这样用户可以从任何位置直接运行该目录下的程序,而不需要输入完整路径。
越前面的PATH,优先级越高

- /usr/local/bin 用于存放用户安装的可执行程序,将用户自定义和第三方软件放在 /usr/local 下,可以避免与系统自带的文件发生冲突。
- /usr/bin 用于存放大多数用户命令和应用程序的可执行文件。这些程序通常是系统提供的,供所有用户使用。该目录包含从操作系统的包管理器安装的软件。
- 默认情况下,/usr/local/bin 的优先级比 /usr/bin 高
将 /usr/local/bin 的优先级提高到最前面
export PATH="/usr/local/bin:$PATH"
将 /usr/local/bin 的优先级降低到最后面
export PATH="$PATH:/usr/local/bin"
需要注意的是,修改$PATH变量只会对当前的终端窗口生效。如果要永久地改变$PATH变量的值,在~/.bashrc或~/.bash_profile文件中添加上述命令即可。同时,不同的操作系统可能会有不同的文件名和配置方式,请根据实际情况进行修改。
查看当前CMake命令的位置
which 命令可以告诉您命令的完整路径。如果 CMake 已经安装,并且在您的 PATH 环境变量中,可以通过以下命令找到它:
which cmake
whereis 命令不仅会显示可执行文件的位置,还会显示源代码和手册页的位置。您可以这样使用:
whereis cmake
如果您想在整个系统中查找 CMake,可以使用 find 命令,但这可能会花费一些时间:
sudo find / -name cmake
如果您只想确认 CMake 是否已安装并查看其版本,可以运行:
cmake --version
高版本 CMake 安装
1、检查当前版本
cmake --version
2、删除当前版本,如果你系统中有ROS,请不要执行这一步
sudo apt remove cmake
如果系统中有ROS,请不要执行这一步
其实没有ROS,也可以不执行这一步,无非是多版本共存。
3、 根据自身情况,从 https://cmake.org/download/ 下载对应的bash script.
我的情况,我下载的是 cmake-3.31.0-rc2-linux-x86_64.sh
4、 复制 该文件到 /opt/.
以我的脚本为例,大家不尽相同。
sudo cp cmake-3.31.0-rc2-linux-x86_64.sh /opt/cmake-3.31.sh
5、赋予该脚本可运行权利
chmod +x /opt/cmake-3.*your_version*.sh
6、运行
sudo bash /opt/cmake-3.*your_version*.sh
你需要按两次y进行确认
7、建立软链接
这个脚本将二进制文件安装到了/opt/cmake-3.*your_version*,所以为了使用cmake命令,你需要创立一个软链接。
sudo ln -s /opt/cmake-3.*your_version*/bin/* /usr/local/bin
你原本系统自带的cmake在/usr/bin下,我们现在将这个高版本的cmake软链接到/usr/local/bin下。而默认情况下,后者比前者的优先级要高,可通过前面的先验知识确认。
8、验证
cmake --version
参考
Linux 符号链接教程——如何创建和删除符号链接
Ubuntu设置环境变量顺序
How to upgrade cmake in Ubuntu
相关文章:
ubuntu更新Cmake
CMake 先验知识创建软链接如何删除符号链接如何找出失效链接并将其删除PATH 优先级查看当前CMake命令的位置 高版本 CMake 安装参考 先验知识 创建软链接 ln -s <path to the file/folder to be linked> <the path of the link to be created>ln 是链接命令&…...
CMOS晶体管的串联与并联
CMOS晶体管的串联与并联 前言 对于mos管的串联和并联,一直没有整明白,特别是设计到EDA软件中,关于MOS的M和F参数,就更困惑了,今天看了许多资料以及在EDA软件上验证了电路结构与版图的对应关系,总算有点收…...
从IT高管到看门大爷:53岁我的职场华丽转身
该文讲述了一位1971年出生的男士,在53岁时因日企撤资而失业。他曾是IT技术员,后晋升为IT高管兼工会主席,但失业后数百份简历石沉大海,面试也因年龄被取消。他意识到年龄是求职的障碍,开始调整心态,降低期望…...
Redis入门到精通(三):入门Redis看这一篇就够了
文章目录 Redis分布式锁的实现原理Redis实现分布式锁如何合理的控制锁的有效时常?**redisson实现的分布式锁**redisson实现的如何保证主从一致性 Redis的集群方案1.主从复制主从数据的同步原理全量同步增量同步 2.哨兵模式Redis的集群脑裂是什么?3.分片集…...
IP基本原理
IP的定义 当前唯一的网络层协议标准定义数据网络层的封装方式、编址方法 MTU 最大传输单元接口收发数据支持的单个包的最大长度不同二层链路类型的接口的MTU不一致。以太网接口默认MTU1500Byte。PPPoE接口默认MTU1480Byte。 IP头部封装格式 IP 头部长度不固定,2…...
数据分析题面试题系列2
一.如何估算星巴克一天的营业额 a.需求澄清:区域?节假日?产品范围? b.收入销售杯数*单价(营业时间*每小时产能*每小时产能利用率)*平均单价 Hypo该星巴克门店的营业时间为12小时(取整&#x…...
uniapp 单表、多级动态表单添加validateFunction自定义规则
uniapp 多级动态表单添加自定义规则 在uniapp制作小程序时,当涉及到需要设置validateFunction的校验规则时。可能遇到的问题 1、validateFunction不生效,没有触发 2、多层级表单怎么添加validateFunction自定义校验规则 本文将以单表单校验和多表单校…...
FPGA高端图像处理培训第一期,提供工程源码+视频教程+FPGA开发板
目录 1、FPGA图像处理培训现状分析2、本FPGA图像处理培训优势亮点架构全起点高实用性强项目应用级别细节恐怖工程源码清晰 3、本FPGA图像处理培训内容介绍图像处理基本框架图像前处理框架图像中处理框架图像前中处理框架图像后处理框架图像中后处理框架图像处理仿真框架视频教程…...
顺序表的实现(数据结构)——C语言
目录 1.结构与概念 2.分类 3 动态顺序表的实现 SeqList.h SeqList.c 创建SLInit: 尾插SLPushBack以及SLCheak(检查空间是否足够): 头插SLPushFront: 尾删SLPopBack 头删SLPopFront 查找指定元素SLFind 指定…...
【VUE】Vue中 computed计算属性和watch侦听器的区别
核心功能不同 computed 是一个计算属性,其核心功能是基于已有的数据属性计算得出新的属性值。当某个依赖的数据发生变化时,computed 会自动重新计算并更新自己的值。因此,可以将 computed 看做是一种“派生状态”。 watch 是一个观察者函数&…...
linux线程 | 同步与互斥 | 深度学习与理解同步
前言:本节内容主要讲解linux下的同步问题。 同步问题是保证数据安全的情况下,让我们的线程访问具有一定的顺序性。 线程安全就规定了它必须是在加锁的场景下的!!那么, 具体什么是同步问题, 我们加下来看看吧…...
Tkinter Frame布局笔记--做一个简易的计算器
#encodingutf-8 import tkinter import re import tkinter.messagebox import tkinter.simpledialog import sys import os def get_resources_path(relative_path):if getattr(sys,frozen, False):base_pathsys._MEIPASS#获取临时文件else:base_pathos.path.dirname(".&q…...
算法专题八: 链表
目录 链表1. 链表的常用技巧和操作总结2. 两数相加3. 两两交换链表中的节点4. 重排链表5. 合并K个升序链表6. K个一组翻转链表 链表 1. 链表的常用技巧和操作总结 常用技巧 画图!!! 更加直观形象, 便于我们理解引入虚拟头节点, 方便我们对链表的操作, 减少我们对边界情况的考…...
MySQL中关于NULL值的六大坑!你被坑过吗?
NULL值是我们在开发过程中的老朋友了,但是这个老朋友在MySQL中有很多坑,我通过这篇文章来总结分享一下,欢迎大家在评论区分享你的看法和踩坑经历。 1、NULL不等于NULL 在MySQL中,执行以下SQL会返回NULL 假如t表有以下数据&#…...
学生学习动机测试:激发潜能,引领未来
学习动机、学习兴趣和学习目标制定是影响学生学习成效的三个关键因素。通过对学生学习动机的测试,我们可以深入了解学生的学习状态,进而采取针对性的措施,激发他们的学习潜能,引导他们走向更加光明的未来。本文将从学习动机、学习兴趣和学习目标制定三个方面,详细探讨学生…...
基于SSM党务政务服务热线管理系统的设计
管理员账户功能包括:系统首页,个人中心,用户管理,部门管理,办事信息管理,信息记录管理,系统管理 前台账号功能包括:系统首页,个人中心,部门,信息…...
OSI参考模型详解:初学者指南与实践案例
OSI参考模型详解:初学者指南与实践案例 OSI(Open System Interconnect)参考模型是一个由国际标准化组织(ISO)提出的七层网络分层模型,它为全球所有互联计算机系统提供了一个通用的通信框架,解决…...
S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为服务器
TCP 协议通信 TCP 通信为面向连接的通信,需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 S7-1200 通过 TCP 通信,在 S7-1200 调用 T-block 指令 ( TCON, TDISCON, TSEND, TRCV ) ,在 S7-200 SMART 调用 Open User Communication …...
Java @RequestPart注解:同时实现文件上传与JSON对象传参
RequestPart注解:用于处理multipart/form-data请求的一部分,通常用于文件上传或者处理表单中的字段。 java后端举例: PostMapping("/fileTest")public AjaxResult fileTest(RequestPart("file") MultipartFile file,Req…...
深度学习基础知识-02 数据预处理
深度学习的数据预处理通常包括: 1.数据清洗:去除错误或不完整的数据。 2.归一化:调整数据范围,如将像素值缩放到0-1。 3.数据增强:通过旋转、缩放等方法增加数据多样性。 4.数据划分:将数据分为训练集、验证…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
