Nav2笔记(一)——安装

安装Ros2 设置系统语言环境 locale # check for UTF-8sudo apt update && sudo apt install localessudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8export LANG=en_US.UT...
阅读全文

基于vscode的C++调试方法

在vscode中,启动调试依赖于launch.json。 该文件位于工程目录下的.vscode文件夹中。如果不存在可以自己创建。 以gdb启动程序 { "version": "0.2.0", "configurations": [ { "name": ...
阅读全文

Eigen调试信息优化显示

简述 因为Eigen采用了大量模板元编程,所以在调试时,其数据对象的原始堆栈信息非常复杂,在Eigen的官方源码中,实际上提供了优化显示用的配置文件。 获取配置文件 git clone https://gitlab.com/libeigen/eigen.gitcd eigen/debugtree# 可见下述内容.├── gdb│   ├── __init__.py│   └── printers....
阅读全文

基于Docker+QEMU部署交叉编译环境

安装QEMU 这一步是为了使系统可以识别到arm格式的文件,将其发送给qemu模拟器执行 sudo apt install -y qemu-user-static binfmt-supportecho ':aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\...
阅读全文

conan2简要使用指南

简介 conan2是一款为C++提供的跨平台包管理器,可以通过配置文件的方式获取并管理不同版本的三方库,极大程度上解决了C++在库管理上的痛点。 编译主要的依赖的依旧是cmake这类的工具,可以理解为该工具自动化了cmake的参数配置,使其可以更容易的获取到指定的三方库。 安装conan2 通过pip直接安装 这种方法最简单,不过需要系统环境中有python,用conda的虚拟环境也可以 pip ...
阅读全文

C++使用new在已分配的内存上构造对象

案例代码 new (&_u.zclmsg.content->refcnt) zmq::atomic_counter_t ();//刚好在zmq中看到这个实现方式 使用格式 char* ptr = new char[sizeof(T)]; // 分配内存T* tptr = new(ptr) T; // 在已分配内存中构造... // 此时起tptr可以作为一个T*...
阅读全文

C++中的errno关键字

在C和C++编程中,errno是一个全局变量,用于指示函数失败的原因。 例如,在执行文件操作或数学运算时,如果函数无法成功完成其任务,它可能会设置errno来提供错误的具体原因。 访问errno的基础方式 在C和C++中,你可以通过直接访问errno变量来获取当前的错误代码。例如: #include <stdio.h>#include <errno.h>#include &...
阅读全文

Linux下基于CMake交叉编译C++程序

概述 记录了一种交叉编译配置方法,用于编译生成ARM环境下执行的c++程序。 获取交叉编译器 可以从https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads网站中获取到交叉编译器工具链。 按照需求下载需要的程序安装包,例如: 执行机器:树莓派5 执行环境:aarch64-linux-gnu | gcc version ...
阅读全文

CMake笔记

脚本基础功能 函数输入参数基本语法 < > 表示设置量< >... 表示一组设置量[ ] 表示可选的内容 功能函数 设置CMake最低版本限制(必须) cmake_minimum_required(VERSION <min>[...<policy_max>])# 执行后,设置变量CMAKE_MINIMUM_REQUIRED_VERSION = <...
阅读全文