Linux安装/更新CMake

本文详细指导如何在Linux系统上安装和配置CMake,包括安装OpensSSL开发库,从wget或官网下载CMake源码包,解压、配置、构建、安装,以及添加动态库链接和版本验证步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 安装OpensSSL开发库(安装cmake的时候需要这个库)

sudo apt install libssl-dev

2 下载CMake

  • 方法一 使用wget命名下载CMake(如果请求被拒绝就使用方法二)
    wget https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6.tar.gz
    
  • 方法二 去CMake官网下载对应版本的源码包,例如cmake-3.20.6.tar.gz(不要下有很多后缀的那种)

3 解压源码包

tar -xzf cmake-3.20.6.tar.gz

4 进入源码目录并配置:

cd cmake-3.20.6
./configure

5 构建和安装:

sudo make && sudo make install

6 添加动态库链接:

sudo ldconfig

7 检查CMake版本验证安装成功:

cmake --version
<think>我们遇到了一个关于 `update-alternatives` 的问题,错误信息是:`update-alternatives: <link> and <path> can't be the same`。这是因为在注册替代项时,指定的链接(`/usr/bin/cmake`)和实际路径(也是`/usr/bin/cmake`)相同,导致无法创建符号链接。 用户可能之前尝试了类似这样的命令: ```bash sudo update-alternatives --install /usr/bin/cmake cmake /usr/bin/cmake 100 ``` 这里的问题在于,链接路径和程序路径都指向了同一个位置(`/usr/bin/cmake`),这是不允许的。 ### 解决步骤 #### 1. 理解 `update-alternatives` 的正确用法 `update-alternatives` 用于管理同一个命令的多个版本。它通过创建一个符号链接(例如 `/usr/bin/cmake`)指向 `/etc/alternatives/cmake`,而 `/etc/alternatives/cmake` 又指向实际安装的某个版本的可执行文件(例如 `/opt/cmake-3.26/bin/cmake`)。 因此,在注册时,需要提供: - 链接(link):通常是标准命令路径,如 `/usr/bin/cmake` - 名称(name):替代组的名称,如 `cmake` - 路径(path):实际安装的某个版本的可执行文件路径,如 `/opt/cmake-3.26/bin/cmake` - 优先级(priority):数字,越大表示优先级越高 #### 2. 修复当前错误 要修复这个错误,我们需要确保注册时提供的“实际路径”不是指向链接路径(即不能和链接路径相同)。也就是说,我们必须提供不同版本的 CMake 的实际安装路径。 例如,假设我们有两个版本的 CMake: - 版本1:安装在 `/opt/cmake-3.22/bin/cmake` - 版本2:安装在 `/opt/cmake-3.26/bin/cmake` 那么,注册命令应该是: ```bash # 注册第一个版本 sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake-3.22/bin/cmake 22 # 注册第二个版本 sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake-3.26/bin/cmake 26 ``` #### 3. 修复“broken link group”警告 如果之前配置错误,可能会导致替代组处于“broken”状态。我们可以通过以下步骤修复: ##### 3.1 检查当前替代组状态 ```bash sudo update-alternatives --config cmake ``` 如果出现错误,可能需要先移除错误的配置。 ##### 3.2 移除所有现有配置(如果需要) 如果之前配置有误,可以先移除整个替代组: ```bash sudo update-alternatives --remove-all cmake ``` 注意:这会删除整个替代组,之后需要重新注册所有版本。 ##### 3.3 重新注册正确的版本 按照步骤2中的方式重新注册。 #### 4. 验证配置 ```bash update-alternatives --list cmake ``` 应该列出所有已注册的版本。 然后使用: ```bash sudo update-alternatives --config cmake ``` 选择其中一个版本,并验证: ```bash cmake --version ``` ### 示例:完整修复流程 假设我们有两个 CMake 版本: - `/usr/local/cmake-3.22/bin/cmake` (优先级22) - `/usr/local/cmake-3.26/bin/cmake` (优先级26) 步骤: ```bash # 1. 移除现有的错误配置(如果存在) sudo update-alternatives --remove-all cmake # 2. 注册两个版本 sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/cmake-3.22/bin/cmake 22 sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/cmake-3.26/bin/cmake 26 # 3. 选择默认版本 sudo update-alternatives --config cmake # 在交互菜单中选择一个版本 # 4. 验证 cmake --version ``` ### 注意事项 - **确保路径存在**:在注册之前,确保提供的实际路径确实存在。 - **避免重复注册**:同一个路径不要重复注册。 - **优先级**:优先级数字越大,在自动模式(auto mode)下越可能被选为默认版本。 ### 如果系统已经有一个默认的 CMake 如果系统已经有一个 CMake(例如在 `/usr/bin/cmake`),但你想用其他版本替代它,那么你应该将系统自带的版本也注册到替代组中。例如,系统自带的 CMake 路径是 `/usr/bin/cmake`(注意这个路径就是链接,不能直接注册),你需要找到系统自带的 CMake 的实际路径(可能是 `/usr/bin/cmake-system` 或类似),或者先备份移除系统自带的,然后安装其他版本。 但是注意:不要将链接路径(`/usr/bin/cmake`)作为实际路径注册,这样会导致上述错误。实际路径必须是真实的可执行文件路径。 ### 总结 修复错误的关键是确保在 `--install` 命令中,链接路径(第一个参数)和实际路径(第三个参数)不能相同。实际路径应该是不同版本 CMake 的真实安装路径。 通过正确注册多个版本,然后使用 `--config` 进行切换,即可解决“broken link group”的问题。</think>### 修复 "link group cmake is broken" 警告并正确配置 CMake 您遇到的 `update-alternatives: <link> and <path> can't be the same` 错误和 "broken link group" 警告,通常是由于符号链接配置冲突或路径重复造成的。以下是完整修复步骤: #### 步骤 1:诊断当前替代组状态 ```bash sudo update-alternatives --display cmake ``` 检查输出是否包含 `link group cmake is broken` 警告,并记录所有已注册的路径。 #### 步骤 2:修复冲突的核心问题 错误原因:您尝试将链接路径(`/usr/bin/cmake`)和实际路径(`/usr/bin/cmake`)设为相同,这是不允许的。需要指定**不同的实际安装路径**。 正确做法: ```bash # 正确格式:sudo update-alternatives --install <链接路径> <名称> <实际路径> <优先级> sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake-3.26/bin/cmake 100 ``` #### 步骤 3:彻底修复 "broken link group" 1. **移除所有无效配置**: ```bash sudo update-alternatives --remove-all cmake ``` 2. **重新注册有效版本**: ```bash # 注册 CMake 3.22 sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake-3.22/bin/cmake 22 # 注册 CMake 3.26 sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake-3.26/bin/cmake 26 ``` 3. **验证符号链接**: ```bash ls -l /etc/alternatives/cmake # 应指向有效的 CMake 路径 ls -l /usr/bin/cmake # 应指向 /etc/alternatives/cmake ``` #### 步骤 4:修复系统自带的冲突 如果系统预装 CMake 导致冲突: ```bash # 备份原版 sudo mv /usr/bin/cmake /usr/bin/cmake-system # 重新创建替代组 sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake-3.26/bin/cmake 26 ``` #### 步骤 5:验证修复结果 ```bash # 检查替代组状态 sudo update-alternatives --display cmake # 测试 CMake 版本 cmake --version ``` 应显示类似输出: ``` cmake version 3.26.4 ``` #### 关键注意事项 1. **路径必须不同**: - 链接路径:`/usr/bin/cmake` - 实际路径:`/opt/cmake-x.x/bin/cmake`(必须不同) 2. **优先级规则**: - 数字越大优先级越高 - 自动模式(`--auto`)会选择最高优先级的版本 3. **多版本管理**: ```bash # 交互式切换版本 sudo update-alternatives --config cmake ``` 4. **彻底移除版本**: ```bash sudo update-alternatives --remove cmake /opt/cmake-3.22/bin/cmake ``` > **提示**:如果遇到权限问题,可使用 `sudo update-alternatives --force /usr/bin/cmake` 强制修复[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值