linux 安装cmake

文章目录

  • 一.有三种安装方式
    • 1.通过在官网上下载Binary distributions或者Source distributions
    • 2.通过在官网上下载Source distributions或者在github上克隆cmake的源码(未编译)
    • 3.官网上下载Source distributions的.sh脚本文件
      • (1)**使用软连接添加系统变量**
      • (2)使用配置PATH
        • 遇到的关键性问题
  • 二.删除cmake

一.有三种安装方式

  • 1.通过在官网上下载Binary distributions或者Source distributions

    二进制文件安装方法更加简单,就跟在Windows一样,最后把bin文件添加进系统路径即可
    具体操作
    1.在官网上下载编译好的Binary distributions,解压到到/opt目录(opt用于安装软件),不一定非要解压到系统目录,就好比我们不把软件装在c盘
    2.把bin目录添加到系统变量,必须写入到~/.bashrc, ~/.bash_profile, /etc/bashrc,/etc/profile任意一个,这样才能永久生效。
    方法参考这里

在这里插入图片描述

  • 2.通过在官网上下载Source distributions或者在github上克隆cmake的源码(未编译)

因为cmake是c语言编写的,所以使用源文件安装的时候需要先对cmake进行编译形成可执行文件,具体过程看github下载页面后有介绍,按其步骤操作。
因为涉及编译,所以过程也会慢一些

  • 3.官网上下载Source distributions的.sh脚本文件

    1.下载后先进入/opt目录,因为执行.sh之后会在当前目录安装cmake
    2.使用软连接或添加PATH的方式把cmake目录下的bin放入系统变量。

    • (1)使用软连接添加系统变量

      因为软连接就是在指定目录创建一个原文件的快捷方式如图但记住 ln src target都必须是绝对路径
      在这里插入图片描述
      所以我们完全可以直接在/usr/local/bin中为cmake的bin目录中的所有文件创建软连接这里特别注意我们知道系统只会去/usr/local/bin目录寻找相关的命令,如这里的cmake,如果我们ln -s /opt/cmake-3.27.1-Linux-x86_64.sh/bin/ /usr/local/bin的话系统就只能寻找到bin而不能寻找的cmake命令,所以需要为cmake的bin目录中的所有文件创建软连接。

sudo ln -s /opt/cmake-3.27.1-Linux-x86_64.sh/bin/* /usr/local/bin
注意这里不是让/usr/local/bin目录变成一个链接,而是说把 /opt/cmake-3.27.1-Linux-x86_64.sh/bin/下的所有文件的链接都放入/usr/local/bin目录
硬连接教程

  • (2)使用配置PATH

      1. 修改~/.bashrc, ~/.bash_profile, /etc/bashrc,/etc/profile任意一个
        在文件末尾追加环境变量
        在这里插入图片描述
  • 2.source /etc/bashrc刷新即可

  • 3.更多修改~/.bashrc配置文件的操作参考

  • 遇到的关键性问题

    我们在添加环境变量的时候发现cmake的文件夹为cmake-3.29.2-linux-x86_64,我们想更改文件夹的名字为cmake-3.29.2,首先使用mv <现文件夹> <目标文件夹>,但是发现移动后出现文件丢失。
    然后尝试cp,但是我们如果直接cp cmake-3.29.2-linux-x86_64 cmake-3.29.2,就会把cmake-3.29.2-linux-x86_64原封不动的复制到cmake-3.29.2中,但是我们需要的是期子目录而不是它。解决方案是:1.使用cp cp cmake-3.29.2-linux-x86_64/* cmake-3.29.2这样最简单最好用
    2.使用sudo ls cmake-3.29.2-linux-x86_64 | xargs -I {} cp cmake-3.29.2-linux-x86_64/{} cmake-3.29.2即可将子目录进行复制

二.删除cmake

先使用find找出所有cmake的文件,注意看find的cmake文件情况,然后灵活使用*make 或 *make*进行正则匹配相应文件然后删除

  • 1.通过管道

    sudo find / -name "*cmake" | xargs sudo rm -rf 
    

    如果要把find结果支持作为多个命令的参数,则

    sudo find / -name "*cmake" | xargs -I {} bash -c 'sudo rm -rf {} ; cat {}' 
    加bash -c ' '才支持多参数传递
    - I {}支持后面命令中的{}替换
    

    find /表示从根目录开始指定参数-name进行查找,然后把查找的结果传给rm。xargs负责把查找的内容划分为单个的命令参数传给rm,否则rm根本不知道删除哪个文件。xagrs默认以换行符,空格,TAB进行分割传递,因为find的结果都有换行符所有我们比较方便直分割,否则我们可能需要用到其他参数
    xargs参数详情用法点击

  • 2.通过-exec选项

    sudo find / -name "*cmake" -exec sudo rm -rf {} \;
    

    如果要把find结果支持作为多个命令的参数,则

    sudo find / -name "*cmake" -exec bash -c 'sudo rm -rf {} ; cat {}' \;
    加bash -c ' '才支持多参数传递 
    

    1.注意find/表示根目录开始搜索,当然也可以换成其他目录
    2.-exec表示把find找到的每一个文件通过{}传递给rm作参数
    3.-exec后面可以加多个命令,不限制只有rm一个,即可以把find到的每个结果作为参数同时传给多个命令,然后\表示-exec的作用域结束
    -exec可参考

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

申请泛域名证书步骤

泛域名证书的广泛应用范围&#xff1a; 泛域名证书不同于普通的单域名数字证书和多域名数字证书&#xff0c;可以一次以一张证书对应无限多的域名&#xff0c;在功能性和方便性上远优于一般证书。 单域名证书顾名思义&#xff0c;一张证书只对应一个独立域名&#xff0c;多域…

[笔试训练](五)

013 游游的you__牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 组成一个you需要一个o且能得2分&#xff0c;而组成相邻字母oo需要两个o&#xff0c;只能得1分。优先考虑组成尽可能多的you&#xff0c;再考虑剩下的o&#xff0c;放一起。 #include <iostream…

Llama 3问世:迄今为止的最强开源大语言模型

导语 最近Meta发布了其研发的第三代开源大语言模型Llama 3&#xff0c;并宣称Llama 3为迄今为止的最强开源大语言模型&#xff0c;本文对其进行简要学习记录。若想了解之前版本的Llama模型&#xff0c;可参考我之前写的论文笔记&#xff1a;Llama、Llama 2、CodeLlama。 要点…

国产电子耳标识读器GALLAGHER盖力格平替

GALLAGHER盖力格是一家总部位于新西兰的全球技术公司&#xff0c;在动物管理方面处于全球领先地位。KEZMO科智牧对标GALLAGHER盖力格旗下的RFID电子耳标识读器&#xff0c;凭借自身强劲的研发实力&#xff0c;研发生产了属于我们自己的国产RFID电子耳标识读器&#xff1a;JY-L8…

报名 | Qt汽车及工业行业解决方案及实战训练 深圳站(5月15日 星期三)

加入我们的Qt技术培训&#xff0c;探索跨平台应用开发的无限可能&#xff01;本次培训将深入Qt框架&#xff0c;涵盖从基础概念到高级功能的全方位知识&#xff0c;无论您是刚入门的新手还是希望提升技能的资深开发者&#xff0c;都能在此找到适合自己的学习路径。通过实践案例…

开曼群岛:Web3企业的乐园

开曼群岛&#xff1a;Web3企业的理想之地 开曼群岛&#xff0c;在数字革命中大放异彩。近年来&#xff0c;该地区成立的Web3企业数量显著增加&#xff0c;如果保持目前的发展速度&#xff0c;并持续优化立法&#xff0c;那么扩展的速度将无可限量。本文将探讨推动这一增长的关…

代码随想录算法训练营DAY36|C++贪心算法Part.5|435.无重叠区间、763.划分字母区间、56. 合并区间

文章目录 435.无重叠区间按右边界排序CPP代码 按左边界排序如何判断相邻区间是否重叠如何判断一下一个区间与当前相邻区间是否重叠总结CPP代码 763.划分字母区间思路伪代码实现CPP代码 56. 合并区间思路CPP代码 435.无重叠区间 力扣题目链接 文章链接&#xff1a;435.无重叠区间…

MPC的横向控制与算法仿真实现

文章目录 1. 引言2. 模型预测控制&#xff08;MPC&#xff09;2.1 基础知识2.2 MPC的整体流程2.3 MPC的设计求解 3. 车辆运动学MPC设计4. 算法和仿真实现 1. 引言 随着智能交通系统和自动驾驶技术的发展&#xff0c;车辆的横向控制成为了研究的热点。横向控制指的是对车辆在行…

Linux--05---相对路径与绝对路径、终端的认识

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. 相对路径与绝对路径切换到用户家目录&#xff1a;cd ~当前目录&#xff1a;./ 2. 对终端的认识3. 文件的类型颜色表示的文件类型&#xff1a;文件类型和权限的表…

Redis事务全解析:从MULTI到EXEC的操作指南!

【更多精彩内容,欢迎关注小米的微信公众号“软件求生”】 亲爱的粉丝朋友们,大家好!今天我们要讨论的主题是Redis的事务。Redis作为一款优秀的NoSQL数据库,凭借其高性能和灵活性广受欢迎。事务是Redis的一项关键功能,它为我们提供了一种在数据操作中确保一致性的机制。接…

每日一题---环形链表的约瑟夫问题

文章目录 前言1.题目2.解题思路2.1创建节点 2.2.创建环形链表2.3.进行遍历 4参考代码 前言 前段时间我们学习到了单链表和双向链表的相关知识&#xff0c;下面我们解决一道具有代表性的一个编程题。 牛客网—环形链表的约瑟夫问题 1.题目 2.解题思路 2.1创建节点 //创建节点…

CentOS 7.9.2007 中Docker使用GPU

一、安装nvidia驱动 1.1&#xff0c;查看显卡驱动 # 查看显卡型号 lspci | grep -i nvidia 1.2&#xff0c;进入 PCI devices &#xff0c;输入上一步查询到的 2204 1.3&#xff0c;进入 官方驱动 | NVIDIA&#xff0c;查询 Geforce RTX 3090 驱动并下载 1.4&#xff0c;禁用…