g2o库的一些坑(undefined reference to, fatal error: cs.h)

g2o库出现undefined reference to错误 g2o库出现undefined reference to错误 1.我的CMkeLists.txt cmake_minimum_required(VERSION 2.6) project(g2o_learn) set(CMAKE_CXX_FLAGS "-std=c++11") include_directories("/usr/include/eigen3") find_package(g2o... 阅读详情

g2o库是一个图优化库,在slam中多有应用。

下面是踩过的一些坑,供小伙伴们参考

第一坑
/usr/local/include/g2o/solvers/csparse/csparse_extension.h:27:10: fatal error: cs.h: 没有那个文件或目录
27 | #include <cs.h>
| ^~~~~~
是这样解决的
首先再次安装了一次csparse库,已经安装过的会提示已安装

sudo apt-get install libsuitesparse-dev

然后找suitesparse在哪

locate suitesparse

结果会显示一些/usr/include/suitesparse/下的.h文件, 其中就有cs.h

把这个路径放到CMakeLists.txt中

include_directories("/usr/include/suitesparse/")

第二坑,undefined reference to `g2o XXX
很多g2o的函数找不到。
在CMakeLists.txt中添加如下即可。

target_link_libraries(XXX g2o_core g2o_types_slam3d g2o_solver_csparse g2o_stuff g2o_csparse_extension)
关于SLAM十四讲第9讲的编译过程报错问题!!!(/usr/bin/ld: CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cp) 后来想到是不是第一次libsuitesparse库没卸载干净,导致第二次sudo apt install libsuitesparse库的时候与第一次残余文件冲突,导致g2o编译时链接到的是第一次的残余文件(PS:这里是我的一个猜测,至于是不是希望有大佬解答!这里提供用来删除软件(库)等残余文件的命令,它可以在删除软件本身的同时,删除该软件包的残余设置文件。另外,查了好多别人的博客记录,好像没有其他人出现我这个错误!这其中肯定会报错的,但是这里就能通过报错的内容把。,只留下不报错的自然就能编译通过! 阅读详情

相关推荐

程序编译出错记录及解决方案

2016.06.29 自己写了个opencv读写图片的程序,工程demo按照高翔一起做RGBD(2)里构建的,自己在源文件里添加了几行简单的opencv读写图片程序,有如下报错:CMakeFiles/main.dir/main.cpp.o: In function `cv::Mat::~Mat()': main.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0

公独何人,心如止水。 8937

g2o指针报错

g2o指针报错 1.问题描述一 error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >::BlockSolver(SlamLinearSolver*&) 并且提示 std::unique_ptr 指针原因,可能是重复引用 参考链接 https://blog.csdn.net/robinhjwy/article/details/78084210. h

weixin_43848456的博客 892

Anbox编译实战:CMake与Android.mk常见错误排查指南

CMake作为跨平台构建系统生成器,是现代C++项目构建的标准工具,它通过解析CMakeLists.txt文件生成平台特定的构建脚本。Android NDK则提供了Android.mk这一基于GNU Make的构建系统,用于编译原生代码。在Linux系统上实现Android应用兼容性时,常需同时处理这两种构建系统,其技术价值在于能够高效集成Android运行时环境而不依赖硬件虚拟化。应用场景包括嵌入式系统、容器化Android环境以及定制化ROM开发。本文聚焦于Anbox项目编译过程中CMake依赖缺失、版

adiking520110的博客 462

安装RTABMAP出现错误cs.h fatal error或error: undefined reference to `g2o::csparse_extension解决办法

解决: cs.h错误和error: undefined reference to `g2o::csparse_extension等错误 参考: https://blog.csdn.net/yangziluomu/article/details/72622225

z952957407的博客 967

Android源码编译排错实战:从环境配置到SELinux策略的完整指南

在软件开发领域,构建系统是连接源代码与可执行产物的核心桥梁,其原理在于将代码、资源与配置按照特定规则转化为目标文件。对于Android系统开发而言,AOSP的构建系统经历了从Make到Soong的演进,技术价值在于提供了更严格、可扩展的模块化构建能力,能有效管理大型代码库的依赖与变体。然而,在实际工程实践中,开发者常面临环境配置、依赖解析、SELinux策略冲突等高频问题,导致编译失败。本文聚焦Android源码编译过程中的典型错误,系统梳理了从基础环境搭建、Soong/Blueprint构建系统配置,到S

weixin_30682415的博客 330

Ubuntu18.04配置《视觉SLAM十四讲》环境以及部分错误修正【亲测】【从零开始配置】

【代码】Ubuntu18.04配置《视觉SLAM十四讲》环境以及部分错误修正【亲测】【从零开始配置】

2301_79694635的博客 2690

ndnSIM从零到跑通:环境搭建、核心概念与首个仿真脚本避坑指南

网络仿真作为研究新型网络架构的重要手段,在命名数据网络(NDN)等领域扮演关键角色。NDN以内容命名为核心,与IP网络的主机通信模型截然不同。在NS-3平台上,ndnSIM提供了模块化的NDN模拟环境,使研究者能够灵活验证转发策略、缓存管理等机制。本文从零开始,梳理了在Ubuntu 22.04上搭建ndnSIM 2.8环境的关键步骤,解析CS、PIT、FIB等核心数据结构,并给出一个完整的简单仿真脚本实现。通过实际运行与日志分析,展示了Interest/Data包的流转过程。针对编译错误、路由配置、仿真性能

weixin_34301132的博客 596

MOLA_SLAM在ROS2 Humble上的实战部署与环境避坑指南

SLAM(同步定位与建图)是移动机器人感知与导航的核心技术,其落地效果高度依赖底层环境兼容性。MOLA_SLAM作为面向长期自主运行的多模态因子图SLAM框架,强调可解释性与模块化设计,但对ROS2 Humble与Ubuntu 22.04的系统级依赖(如Boost ABI、VTK ABI、C++17标准支持)极为敏感。本文聚焦真实工程场景中的环境毛刺——包括动态库版本冲突、CMake路径优先级博弈、STL内存分配器对齐等隐性问题,提供经三平台交叉验证的编译配置链路、YAML参数调优策略及GDB+perf深度

weixin_33976072的博客 477

Bitcoin Core 开发者指南:doc/developer-notes 全解读——C++ 编码风格、多线程锁规范与构建调试实战

《[doc/developer-notes.md](https://link.gitcode.com/i/12b374d5bf00b157b64443186d6a453d)》是 Bitcoin Core 仓库中面向贡献者与代码评审人的核心规范文档,它既是补丁(patch)提交前的“风格宪法”,也是理解 Bitcoin Core 多线程架构、日志体系、RPC 接口设计与 subtree 维护机制的一

gitblog_00911的博客 221

合规批量下载美国上市公司年报数据的一些经验和总结

本文总结了使用Python脚本批量下载和处理美国上市公司SEC报告的技术经验。通过CIK代码查询SEC EDGAR系统,生成特定日期和报告类型的URL,并使用Selenium和Requests库下载报告内容。流程包括数据获取、文件下载、Excel处理和多线程优化,确保高效处理几百条数据。关键技术挑战包括SEC访问限制、动态网页内容和数据完整性,解决方案包括设置合规的User-Agent、使用Selenium模拟浏览器行为以及错误日志记录。最佳实践包括模块化设计、多线程优化和严格遵守SEC合规性。该自动化流程

jyfool的博客 1634

FISCO BCOS平台的用户权限控制与分类管理

在区块链技术日益广泛应用的今天,如何管理与控制不同用户的权限,确保系统的安全性与高效性,成为了区块链平台不可忽视的一部分。FISCO BCOS作为一款高效的联盟链平台,通过细粒度的权限控制机制,提供了对不同用户权限的有效管理。本文将深入探讨FISCO BCOS如何实现用户的权限控制,并对不同用户进行分类与权限管理。FISCO BCOS平台通过精密的权限控制机制,不仅提供了对用户表和系统表的细粒度权限管理,还通过工具与接口为开发者和管理员提供了便捷的权限配置与查询功能。

2201_75798391的博客 1060

radare2 on NetBSD:在浏览器里用 v86 启动完整 NetBSD/i386 与 radare2 的构建实战

本文围绕仓库 `dist/netbsd/` 目录下的构建工程,完整讲解如何把 radare2 交叉编译进一个最小化的 NetBSD/i386 磁盘镜像,并借助 v86 这个浏览器内的 x86 模拟器,把它以"真实 Unix 文本控制台"的形态启动到网页里:root 自动登录、radare2 直接进入 `PATH`、磁盘数据通过 HTTP Range 按需流式加载。读完本文,你将掌握自定义 NetB

gitblog_01113的博客 442

MuJoCo 关节角速度记录与可视化,监控机械臂运动状态

1. 手动计算关节速度,其中timestep为仿真步长。2. 使用data.qvel直接取得关节速度。

darcsdn 766

Qt 5.14.2 aarch64 静态交叉编译实战手册

Qt 是跨平台 C++ 图形用户界面框架,静态交叉编译指在 x86_64 宿主机上生成不依赖目标系统动态库的 aarch64 可执行文件。其核心原理是将 Qt 库、C/C++ 运行时及所有依赖(如 ICU、fontconfig、OpenGL ES)以静态归档(.a)形式链接进单一二进制,彻底规避目标板缺失 libQt5Core.so.5 或 libc.so.6 等运行时错误。该技术显著提升嵌入式部署鲁棒性,适用于 RK3399、Jetson Nano 等 ARM64 工控设备,尤其在只读 rootfs、离线

weixin_33850015的博客 402

halcon3D 点云拟合球体

halon3D 点云拟合球面

weixin_43213429的博客 1639

Jetson Orin边缘语音AI实战:用Riva ASR/TTS + Llama 2打造离线智能语音助手

本文详细介绍了如何利用NVIDIA Jetson Orin的边缘计算能力,结合Riva ASR/TTS语音引擎和Llama 2大语言模型,构建完全离线的智能语音助手。通过硬件优化、量化部署和性能调优,实现在网络不稳定环境下的高效语音交互,适用于智能家居、车载系统等场景。

weixin_29053383的博客 242

Go Web 应用错误处理实战:从 error 接口设计到自定义错误封装(build-web-application-with-golang 第 11.1 节深度解读)

本篇技术指南围绕《build-web-application-with-golang》一书第 11.1 节([ja/11.1.md](https://link.gitcode.com/i/93748f7026a17eb475ef5c5aba706084))展开,系统讲解 Go 语言 error 类型的本质、errors 包的内部实现、自定义错误类型的正确姿势,以及在 Web 应用开发中如何用「自定

gitblog_01146的博客 370

深度学习+遥感:2025最新土地利用分类资源大全(数据集/论文/代码)

近年来,深度学习在遥感影像土地利用分类领域取得了突破性进展,从传统的农田、森林识别,到复杂的城市功能区划分,AI正在重新定义我们对地表覆盖的认知。无论是科研还是工程应用,高质量数据集、前沿算法和开源工具都是成功的关键。本文精心整理了2024年最值得关注的土地利用分类资源,包括:✅ 10+个权威数据集(覆盖全球、多分辨率、多光谱/雷达)✅ 15+篇顶会论文(CNN/Transformer/自监督学习等SOTA方法)✅ 6大开源工具箱(PyTorch/Keras实现,即拿即用)

hanfeng5268的博客 1311

Unity+C++游戏服务器Linux部署实战:从源码编译到联调上线

在游戏开发与高并发服务端架构领域,C++因其卓越的内存控制和高性能计算能力,常被用于构建核心后端系统,以支撑大规模玩家在线交互。其底层原理涉及高效的网络通信模型、多线程并发处理及自定义协议解析,技术价值在于能够实现低延迟、高吞吐的服务响应。而Unity作为成熟的跨平台游戏引擎,负责处理客户端表现逻辑与资源渲染。两者结合,构成了MMO、ARPG等实时交互应用的经典技术栈。部署到Linux服务器,则能充分利用其稳定性和开源生态。本文以“九州飞凤录”项目为例,详细解析如何将Unity前端与C++后端协同部署于Li

weixin_33725270的博客 429

Python全栈入门到实战【基础篇 04】核心基础:变量与4种基础数据类型(int/float/str/bool)

本文介绍了Python编程中的变量和四种基础数据类型,作为后续所有语法的入门前提。变量是数据的“容器”,解决数据复用问题,而数据类型决定数据能进行的操作。文章详细讲解了变量的定义语法、命名规则(强制语法和推荐风格)、赋值与修改原理,并通过实操示例展示其应用场景。正确使用变量可以提升代码复用性、简化修改并增强可读性,是编程效率的核心原则。掌握这些基础知识能避免90%的新手语法错误,为学习更复杂的Python语法打下坚实基础。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 4307

30、航空公司调度问题的数学模型解析

本文详细解析了航空公司调度问题中的核心数学模型,包括航班时刻表生成、机组人员排班和飞机调度的建模方法与求解技术。通过定义变量、约束条件及目标函数,结合线性规划、整数规划等方法,帮助航空公司实现高效调度。文章还探讨了模型的优化策略、简化方法以及实际应用案例,为提升航空运营效率提供了理论支持和实践指导。

beer8的博客 258

ESP32-S3驱动3.2寸屏移植LVGL与Lua,打造可编程嵌入式显示终端

在嵌入式系统开发中,SPI接口显示屏与图形用户界面(GUI)库是实现人机交互的核心技术。SPI协议以其接口简单、占用引脚少的优势,成为驱动中小尺寸显示屏的主流选择。其工作原理是通过串行时钟和数据线进行全双工或半双工通信,主控制器发送指令和数据来控制屏幕像素。这项技术的价值在于能以较低硬件成本实现丰富的视觉反馈,是智能家居、工业HMI、便携设备等场景的基石。LVGL作为一款开源嵌入式图形库,提供了控件、动画和事件系统,极大简化了嵌入式GUI开发。结合轻量级脚本语言Lua,可实现UI逻辑的动态加载与热更新,将静

weixin_34203832的博客 394

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【YiFeiWebApi】YiFeIWebApi更新日志

维度数据更新记录总数50+ 条新增接口数100+ 个业务接口框架升级核心架构改造BaseController 抽象、分布式缓存、全局异常处理、依赖注入重构性能优化N+1 治理、O(n)→O(1) 算法优化、并行查询、缓存策略安全增强JWT、IP 白名单、授权码、限流、CORS 可配置测试覆盖单元测试逐步完善。

德仔 1572

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ARM交叉编译本质:ABI、架构与工具链的深度协同

ARM交叉编译不是简单替换编译器,而是面向特定硬件生态的二进制契约构建过程。其核心在于理解ARM架构差异(如AArch64与ARMv7-A的执行状态断层)、严格遵循GNU EABI规范(尤其是hf硬浮点标识对寄存器使用和链接兼容性的决定性影响),并确保工具链、sysroot、内核、设备树及第三方库在CPU微架构(如ARMv8.2-A)、浮点ABI、内存模型等维度完全对齐。技术价值体现在嵌入式系统可靠性、能效比优化与安全启动可控性;典型场景覆盖Qt跨平台GUI移植、Llama.cpp大模型推理适配、Nginx

weixin_34354173的博客 456

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Ubuntu下VSCode配置C++开发环境:从GCC到CMake的完整指南

C++开发环境配置是程序员入门和项目构建的基础环节,其核心在于理解工具链的协同工作原理。编译器(如GCC)负责将源代码转换为机器码,构建系统(如CMake)则自动化管理多文件编译与依赖关系,而集成开发环境(如VSCode)通过插件体系将这些工具可视化与流程化。在Ubuntu这类Linux系统中配置环境,不仅能深入理解编译、链接、调试的底层机制,更是掌握跨平台项目构建、高性能计算和系统编程的基石。本文聚焦于**VSCode**与**CMake**的集成实践,通过两种主流方案——基于GCC/GDB的直接编译方案

weixin_33721344的博客 445

TLSR8258 SDK虚拟文件系统配置实战指南

嵌入式开发中,SDK路径管理是构建可靠编译环境的基础能力。TLSR8258的虚拟文件系统并非传统符号链接或IDE工程抽象,而是一套融合符号链接、Makefile变量绑定、编译宏驱动与工具链路径契约的轻量级构建机制。其核心价值在于实现芯片平台(如TL8258)与协议栈(BLE/Zigbee)、驱动层和应用逻辑的精准解耦与可复用集成。典型应用场景包括智能照明固件开发、低功耗传感器节点快速验证及多项目协同构建。本文聚焦该机制落地的关键动作:SDK根路径设定、project目录下sdk软链接创建、autogen.s

weixin_34116110的博客 341
上一篇: cpp 指针常量 & 常量指针 & 函数后const
下一篇: g2o_viewer安装及一些坑
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

蓝羽飞鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值