Ubuntu 22.04.4 LTS安装cmake-3.29.5

news2024/11/16 9:40:00

一、下载源码

wget https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5.tar.gz
tar -xzvf cmake-3.29.5.tar.gz

二、编译

运行./bootstrap。

如果出现下列问题:

-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR) 
CMake Error at Utilities/cmcurl/CMakeLists.txt:644 (message):
  Could not find OpenSSL.  Install an OpenSSL development package or
  configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.

安装OpenSSL开发包:sudo apt-get install libssl-dev。

运行make 编译。

三、安装

运行make install

查看版本:sudo cmake --version

复制cmake到/usr/bin: cpy /usr/local/bin /usr/bin

遇到的问题是CMake在尝试构建某个项目时未能找到OpenSSL库。

这通常用于提供加密功能,很多软件依赖它。这里提供几个解决办法:
1. 安装OpenSSL开发包 
   在不同的操作系统上安装OpenSSL的方法有所不同。
   - 在Ubuntu/Debian类Linux发行版上,你可以使用以下命令安装:

     sudo apt-get update
     sudo apt-get install libssl-dev

   - 在Fedora/RedHat/CentOS上,你可以使用以下命令安装:

     sudo yum install openssl-devel

    - 对于macOS,可以使用Homebrew安装OpenSSL:
     

     brew install openssl

   - 在Windows上,你可以从[OpenSSL官网](https://www.openssl.org/)下载相应的预编译版本,或使用像vcpkg这样的包管理器进行安装。
2. 设置OPENSSL_ROOT_DIR环境变量 
   如果OpenSSL已安装但CMake找不到它,你可能需要设置环境变量 OPENSSL_ROOT_DIR 到OpenSSL的安装根目录。在命令行中,你可以这样做:
   - 对于Linux和macOS:

     export OPENSSL_ROOT_DIR=/path/to/openssl

     把 /path/to/openssl 替换为实际的OpenSSL安装路径。
   - 对于Windows,你可以在命令提示符下执行以下命令或在系统环境变量中设置:

     set OPENSSL_ROOT_DIR=C:\path\to\openssl

     同时确保对 OPENSSL_CRYPTO_LIBRARY 和 OPENSSL_INCLUDE_DIR 环境变量也设置正确的路径。
3. 重新运行CMake 
   在安装OpenSSL并确设置环墜变量后,重新运行CMake生成过程。
   如果你想在构建项目时关闭OpenSSL,你可以通过传递 -DCMAKE_USE_OPENSSL=OFF 标志给CMake来实现这一点。例如:

   cmake -DCMAKE_USE_OPENSSL=OFF ..

   这将配置CMake不使用OpenSSL构建项目。
以上步骤应该能帮助解决找不到OpenSSL的问题。如果问题依然存在,请确保你的OpenSSL版本与项目兼容,有时候最新版本的OpenSSL可能不被旧项目支持。此时,尝试安装项目推荐的OpenSSL版本或更新项目代码到支持最新OpenSSL库的版本。

在Ubuntu中升级CMake

你可以按照以下步骤进行,这些步骤结合了参考文章中的信息,并进行了适当的归纳和整理:

方法一:使用apt包管理器(推荐)

  1. 更新系统包列表
    打开终端,输入以下命令来更新系统上的包列表:

    sudo apt-get update

  2. 安装或升级CMake
    使用apt包管理器安装或升级CMake到Ubuntu仓库中的最新版本。输入以下命令:

    sudo apt-get install cmake
    
     

    如果CMake已经安装,这个命令会将其升级到仓库中的最新版本。

方法二:从源代码编译安装(如果需要最新版本)

如果你需要安装CMake的最新版本,而Ubuntu仓库中的版本不满足你的需求,你可以从源代码编译安装CMake。

  1. 下载CMake源代码
    访问CMake的官方网站(https://cmake.org/download/)下载最新版本的源代码。你也可以使用wget命令在终端中下载,例如:

    wget https://cmake.org/files/vX.YY/cmake-X.YY.Z.tar.gz # 请替换为实际的版本号
     

    请将X.YY.Z替换为实际的版本号。

    解压下载的源代码
    使用tar命令解压下载的源代码:

    tar -zxvf cmake-X.YY.Z.tar.gz # 请替换为实际的压缩包名
     

    进入解压后的目录并配置CMake
    进入解压后的目录,并执行配置脚本以准备构建环境:

    cd cmake-X.YY.Z # 请替换为实际的目录名 
    ./bootstrap
     

    编译CMake
    使用make命令编译CMake:

    make
    这可能需要一段时间,特别是如果你的系统配置较低。
  2. 安装CMake
    使用sudo和make install命令安装CMake:

    sudo make install
     
  3. 验证安装
    通过输入以下命令来验证CMake是否已成功安装并检查其版本:

    cmake --version

方法三:使用第三方仓库(可选)

如果你希望使用第三方仓库来获取CMake的最新版本,你可以按照参考文章1或参考文章2中的步骤来添加Kitware的APT仓库并安装CMake。但请注意,使用第三方仓库可能会引入额外的风险,因此在选择和使用之前,请务必仔细阅读相关的文档和说明。

注意事项

  • 在升级CMake之前,请确保你的项目和其他依赖项与新版本的CMake兼容。
  • 如果你之前安装了旧版本的CMake,并且想要确保新安装的版本成为默认版本,你可能需要使用update-alternatives命令或修改PATH环境变量。但请注意,CMake通常不会通过apt包管理器安装多个版本,所以这一步可能是不必要的。
  • 如果你遇到任何问题或错误消息,请参考相关的错误输出和文档进行故障排除。

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

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

相关文章

一个案例,剖析攻防演练中威胁溯源的正确姿势

一年一度的攻防演练即将拉开帷幕。“威胁溯源”一直是演练活动中一个十分重要的工作项,它不仅有助于理解和分析攻击的来源、方法和动机,还能够显著提升整体安全防护水位,提升组件与人员的联动协作能力。在真实的攻击场景中,溯源工…

QT 如何在 QListWidget 的选项中插入自定义组件

有时我们需要 QListWidget 完成更复杂的操作,而不仅限于添加文本或者图标,那么就会使用到 setItemWidget 函数,但是这也会伴生一个问题,插入自定义组件后,QListWidget 对选项点击事件的获取会收到阻塞,因…

ESP使用巴法云远程OTA(VScode + Platform io)

ESP使用巴法云远程OTA(Platform) 什么是OTA: OTA(Over-the-AirTechnology)即空中下载技术,是通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术。OTA升级是物联网(IOT&am…

关于RDMA传输的基本流量控制

Basic flow control for RDMA transfers | The Geek in the Corner (wordpress.com) 文心一言 已经介绍了使用发送/接收操作和RDMA读写操作,那么现在是一个很好的机会来结合这两种方法的元素,并讨论一般的流量控制。还会稍微谈谈RDMA带有立即数据的写操…

外部mysql导入

利用这个命令&#xff1a; mysql -u username -p database_name < file.sql 然后就这样。成功导入。

惠海 H5528 升降压芯片 12V24V36V48V60V75V LED恒流驱动IC 调光细腻顺滑无阶梯感

惠海H5528是一款升压、降压、升压降压的LED恒流驱动IC&#xff0c;其具备宽范围调光比且无频闪调光的特性&#xff0c;使得它在智能照明、Dali调光、0~10V调光、摄影灯照明以及补光灯照明等多种应用中具有广泛的应用前景。 这款芯片支持降压、升压和升降压拓扑的应用&#xff0…

torch.cat 与 torch.concat函数

文章目录 区别torch.cat介绍作用参数使用实例关于参数dim为None的使用 区别 先说结论&#xff1a;没有区别在功能、用法以及作用上&#xff0c;concat函数就是cat函数的别名&#xff08;官方就是这样说的&#xff09;。下面截图为证&#xff1a;   因此接下来就主要是介绍 to…

艾体宝方案 | ntopng监测异常流量并通知到企业微信

你是否曾因网络异常而感到困扰&#xff1f;在数字化时代&#xff0c;网络流量异常可能给企业带来巨大损失。但别担心&#xff0c;我们为您准备了一份详尽的解决方案&#xff01;想知道如何利用ntopng及时发现异常流量&#xff0c;并通过企业微信等渠道通知你的团队吗&#xff1…

【Qt秘籍】[007]-LineEdit Pushbutton控件

Qt的中有着各种各样的控件&#xff0c;相较于传统C/C的输出默认只能在控制台实现&#xff0c;Qt中可以有不同的接口实现各种不同的功能&#xff0c;下面我们将实现不同功能的输出 hello world&#xff01; 标签Label 【Qt秘籍】[006]-Label实现Hello World程序-编程第一步-CSD…

C#操作MySQL从入门到精通(13)——对查询结果使用函数

前言 我们有时候需要对查询到的数据使用函数进行处理,比如去掉空格,比如截取一半长度等操作,下面我来详细介绍: 本文使用的测试数据如下: 1、使用文本处理函数 1.1 Left 返回具有指定长度的字符串的左边部分 下面的代码获取email这个列从左边第一个字符开始计算的一共…

使用 ISIC 快速申请 JetBrain 学生免费产品

此篇文章适合急需通过学生优惠使用 JetBrain 产品并且愿意花费 50 &#xff08;申请国际电子学生证 ISIC 需要 50&#xff09;的学生。需要等待时间1-3天&#xff0c;主要是等待 ISIC 的时间&#xff0c;只要 ISIC 发放 ISIC name 和 ISIC ID&#xff0c;将其填写到 JetBrain 的…

Linux学习笔记8

介绍man命令 在Linux中&#xff0c;man命令用于查看系统手册页&#xff08;manual pages&#xff09;。系统手册页是关于各种Linux命令、函数库以及系统调用的详尽文档&#xff0c;能够提供关于命令的使用方法、参数说明、示例以及其他相关信息 可以利用man xxx的命令去查找某…

系统架构设计师【第19章】: 大数据架构设计理论与实践 (核心总结)

文章目录 19.1 传统数据处理系统存在的问题19.2 大数据处理系统架构分析19.2.1 大数据处理系统面临挑战19.2.2 大数据处理系统架构特征 19.3 Lambda架构19.3.1 Lambda架构对大数据处理系统的理解19.3.2 Lambda架构应用场景19.3.3 Lambda架构介绍19.3.4  Lambda架构的实…

MySQL(四) - SQL优化

一、SQL执行流程 MySQL是客户端-服务器的模式。一条SQL的执行流程如下&#xff1a; 在执行过程中&#xff0c;主要有三类角色&#xff1a;客户端、服务器、存储引擎。 大致可以分为三层&#xff1a; 第一层&#xff1a;客户端连接到服务器&#xff0c;构造SQL并发送给服务器…

电源变压器的作用和性能

电源变压器的主要作用是改变输入电压的大小&#xff0c;通常用于降低电压或升高电压&#xff0c;以便适应不同设备的需求。它们还可以提供隔离&#xff0c;使得输出电路与输入电路之间电气隔离&#xff0c;从而提高安全性。性能方面&#xff0c;电源变压器需要具有高效率、低温…

【OpenHarmony】ArkTS 语法基础 ④ ( ArkTS UI 渲染控制 | if else 条件渲染 | ForEach 循环渲染 )

文章目录 一、ArkTS UI 渲染控制1、if else 条件渲染2、ForEach 循环渲染 二、完整代码示例1、自定义组件代码2、主界面代码3、执行结果 参考文档 : <HarmonyOS第一课>ArkTS开发语言介绍 ForEach 渲染控制文档 : https://developer.huawei.com/consumer/cn/doc/harmonyo…

Python中的Paramiko与FTP文件夹及文件检测技巧

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; Python代码的魅力与实用价值 在当今数字化时代&#xff0c;编程已成为一种不可或缺的技能。Python作为一种简洁、易读且功能强大的编程语言&#xff0c;受到了全球开发者的喜爱。它不仅适用于初学者入门&#xff0c…

玩转STM32-通信协议SPI(详细-慢工出细活)

文章目录 一、SPI的基础知识1.1 接口定义1.2 单机和多机通信 二、STM32的SPI工作过程2.1 从选择&#xff08;NSS&#xff09;脚管理2.2 时钟相位与极性2.3 SPI主模式2.4 SPI从模式 三、应用实例 一、SPI的基础知识 1.1 接口定义 SPI系统可直接与各个厂家生产的多种标准外围器…

通俗易懂的解释保护性看跌期权和抛补看涨期权!

今天带你了解通俗易懂的解释保护性看跌期权和抛补看涨期权&#xff01;当涉及期权交易时&#xff0c;保护性看跌期权和抛补看涨期权是两种常见的策略&#xff0c;它们的目的都是为了在特定市场情况下对投资进行保护或增强收益。 保护性看跌期权 保护性看跌期权是一种风险管理策…

如何以非交互方式将参数传递给交互式脚本

文章目录 问题回答1. 使用 Here Document2. 使用 echo 管道传递3. 使用文件描述符4. 使用 expect 工具 参考 问题 我有一个 Bash 脚本&#xff0c;它使用 read 命令以交互方式读取命令参数&#xff0c;例如 yes/no 选项。是否有一种方法可以在非交互式脚本中调用这个脚本&…