变异Pangolin时,出现错误the file failed to open for read /usr/include/eigen3/Eigen/src/Core/util/Macro.h,解决

博客主要讲述了一个CMake错误,即CMake在查找Eigen相关文件时失败,提示无法打开/usr/local/include/eigen3/Eigen/src/Core/util/Macros.h文件。解决办法是将CmakeFiles中的FindEigen.cmake内容替换为指定网址https://github.com/ceres-solver/ceres-solver/blob/master/cmake/FindEigen.cmake的内容,保存后重新编译。

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

问题:

CMake Error at CMakeModules/FindEigen.cmake:33 (file):
  file failed to open for reading (No such file or directory):

    /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h
Call Stack (most recent call first):
  CMakeModules/FindEigen.cmake:57 (_eigen3_check_version)
  src/CMakeLists.txt:307 (find_package)

 

解决:

 

将原来的CmakeFiles中的FIndEigen.cmake内容全部使用下面网址内容替换:

https://github.com/ceres-solver/ceres-solver/blob/master/cmake/FindEigen.cmake

保存,重新编译。

<think>好的,我现在需要解决用户在Ubuntu Precise版本中遇到的无法获取release文件的问题。用户提到了错误信息是“failed to get release file ubuntu precise archive mirror”,需要找到解决方案。 首先,我应该回忆一下Ubuntu的版本支持情况。Precise Pangolin是Ubuntu 12.04的代号,这个版本已经于2017年4月结束标准支持,现在可能已经不在官方仓库的维护范围内了。这意味着官方的镜像站点可能移除了Precise的软件源,导致用户无法获取release文件。因此,用户需要更换到旧的存档仓库或者寻找其他可用的镜像源。 接下来,我需要检查用户可能使用的软件源配置文件。通常,Ubuntu的源列表位于`/etc/apt/sources.list`以及`/etc/apt/sources.list.d/`目录下的附加文件。用户可能还在使用旧的官方源或者某个已经不可用的镜像源地址。例如,原来的源可能指向`archive.ubuntu.com`,现在需要改为`old-releases.ubuntu.com`,这是Ubuntu为已结束支持的版本提供的存档仓库。 另外,用户可能需要更新软件源列表。在修改源之后,执行`sudo apt-get update`来刷新缓存。如果遇到签名错误,可能还需要添加旧的密钥或者忽略签名检查,不过这可能存在安全风险,需要谨慎处理。 还有一种情况是用户的系统间不正确,导致与仓库服务器的SSL证书验证失败。这候需要检查系统间是否准确,必要进行同步。 此外,用户可能尝试升级到仍受支持的Ubuntu版本。由于Precise已经过,建议用户备份数据并升级到如Ubuntu 16.04或更高版本,以获得持续的支持和更新。 现在,我需要将这些步骤整理成一个清晰的解决方案,确保用户能够逐步操作。同,需要引用相关的参考资料,比如更换源到old-releases和可能的升级步骤,这些在之前的引用中有提到类似的操作,例如引用[1]中的`sudo apt-get -u dist-upgrade`可能用于系统升级,而引用[2]提到的多架构支持可能需要更新后的仓库支持。 最后,生成相关问题,帮助用户进一步解决可能遇到的关联问题,比如如何更换镜像源、如何处理签名错误,以及升级系统的具体步骤等。</think>### 解决方案:Ubuntu Precise无法获取release文件的解决方法 Ubuntu 12.04(Precise Pangolin)已结束官方支持,官方镜像仓库可能已移除相关文件。以下是具体解决步骤: --- #### 1. **更换软件源为旧版存档仓库** 编辑软件源配置文件,将原有仓库地址替换为 `old-releases.ubuntu.com`: ```bash sudo sed -i &#39;s/archive.ubuntu.com/old-releases.ubuntu.com/g&#39; /etc/apt/sources.list sudo sed -i &#39;s/security.ubuntu.com/old-releases.ubuntu.com/g&#39; /etc/apt/sources.list ``` --- #### 2. **手动修改软件源文件** 若上述命令无效,可手动编辑 `/etc/apt/sources.list`,确保所有条目类似以下格式: ``` deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse ``` --- #### 3. **更新软件源列表** 执行以下命令刷新仓库信息: ```bash sudo apt-get update ``` 若出现签名错误(如`NO_PUBKEY`),需添加缺失的密钥: ```bash sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [缺失的密钥ID] ``` --- #### 4. **升级系统(可选)** 建议升级到受支持的版本(如Ubuntu 16.04 LTS): ```bash sudo do-release-upgrade ``` 升级前请备份重要数据[^1]。 --- #### 5. **检查系统间** 若间不准确可能导致SSL验证失败: ```bash sudo apt-get install ntp sudo service ntp restart ``` --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mshone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值