SLAM十四讲第二版ch4 useSophus报错

在遵循高博的SLAM十四讲教程安装Sophus后,编译useSophus时遇到错误。尝试升级Eigen到3.3.8版本未解决问题。进一步研究发现,错误源于CMakeLists.txt中的subdirectory命令。通过注释该命令并可能卸载已安装的Sophus,使用新版本Eigen,成功解决了编译问题。后续的trajectoryError.cpp测试问题将在另一篇博客中详述。

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

在根据高博的提示对Sophus进行安装后,useSophus编译的时候出现问题会出现如下问题:

fatal error: sophus/se3.hpp:没有那个文件或目录

报错
在经过查询后,网上有两种说法:
1、eigen版本需要3.3以上,于是去Eigen官网.下载了最新的3.3.8版本。结果并没有解决这一点。
2、Sophus需要安装,不能按照十四讲的说法只编译,于是我用了下面的命令来进行安装。

sudo make install

然后,重新对useSophus进行编译,结果make的时候报了更多的错误…
在这里插入图片描述
于是又开始搜索我到底是哪里出错了,在看到这篇文章[link]后我突然醒悟了。
看到上面两个报错中,都出现了

[example/CMakeFiles/trajectoryError.dir...]

因为按照书本顺序测试代码环境,所以trajectoryError.cpp的代码还没有进行测试,所以这个时候我不应该subdirectory。
回到CMakeLists.txt中,有这样一句话:

add_subdirectory(example)
### 关于视觉SLAM十四第四章报错解决方案 #### 错误分析 在处理视觉SLAM十四第四章时可能出现多种类型的错误,具体取决于所使用的开发环境和依赖项设置。常见的错误可能涉及编译链接失败、缺少必要的文件或是配置不当等问题。 对于`segmentation fault (core dumped)`这类运行时崩溃错误,在程序试图访问未分配给它的内存空间时发生[^1]。这通常意味着存在指针操作失误或动态数据结构管理上的缺陷。针对此情况,应该仔细审查代码逻辑特别是涉及到内存分配的部分,并确保所有外部资源都已正确初始化。 另外一种可能是由于第三方本兼容性引起的问题。如果项目依赖特定本的OpenCV或其他计算机视觉,则需确认这些已被适当安装并能被工程识别到[^4]。当遇到类似`undefined reference`这样的链接期错误提示时,往往是因为某些函数定义未能找到对应的实现体;此时应检查Makefile或者CMakeLists.txt文件来验证是否遗漏了目标文件列表中的对象模块或者是忘记指定静态/共享路径[^2]。 #### 解决措施建议 为了有效排除上述提到的各种潜在问题: - **核查源码质量**:利用调试工具逐步跟踪执行流程直至异常发生的那一刻为止,定位具体的出错位置; - **更新软件包管理系统**:通过apt-get update命令刷新本地缓存后再尝试重新获取所需组件; - **调整构建脚本参数**:依据官方文档指导修改相关选项以适应当前平台特性; - **清理残留产物重试一遍完整的编译过程**:有时候旧的目标文件会干扰新生成的结果造成冲突所以要彻底清除之前的工作目录再做一次全新的尝试。 ```bash make clean && cmake . && make -j$(nproc) ``` 以上方法能够帮助缓解大部分由环境因素引发的技术难题。当然也鼓励读者参照书籍附带的支持材料深入探究更深层次的原因所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值