分类 Linux软件开发 下的文章

1、定义交叉编译器导致无限循环

cmake_minimum_required (VERSION 3.5)

project (NMEAParserLib) 

set(CMAKE_CXX_COMPILER /home/flmxi/aarch64_gcc/aarch64-mix210-linux/bin/aarch64-mix210-linux-g++) 

set(CMAKE_C_COMPILER /home/flmxi/aarch64_gcc/aarch64-mix210-linux/bin/aarch64-mix210-linux-gcc)

add_subdirectory (NMEAParserLib) add_subdirectory (NMEAParserTest)



2、解决方法

需要将编译器的设置放到project语句之前

cmake_minimum_required (VERSION 3.5)

set(CMAKE_CXX_COMPILER /home/flmxi/aarch64_gcc/aarch64-mix210-linux/bin/aarch64-mix210-linux-g++) 

set(CMAKE_C_COMPILER /home/flmxi/aarch64_gcc/aarch64-mix210-linux/bin/aarch64-mix210-linux-gcc)

project (NMEAParserLib)

add_subdirectory (NMEAParserLib)

add_subdirectory (NMEAParserTest)

#include   <iostream>

#include   <ctime>

#include   <ratio>

#include   <chrono>




1、统计程序耗时

const auto Start = std::chrono::steady_clock::now();

const std::chrono::steady_clock::time_point  End = std::chrono::steady_clock::now();

const std::chrono::duration<double, std::milli> diff = End - Start;

std::cout<<"total time:"<<diff.count()<<"ms"<<std::endl;


2、获取当前时间点,并转为毫秒

std::chrono::system_clock::time_point nowt = std::chrono::system_clock::now();

std::chrono::duration<double, std::milli>  dt = nowt.time_since_epoch();

double  ms = dt.count();


3、获取当前时间点作为文件夹或文件命名

    char    buf[256]="";
    struct tm* date_time;
    time_t  now;
    time(&now);
    date_time = localtime(&now);
    strftime(buf, sizeof(buf)/sizeof(buf[0]), "%Y%m%d_%H%M%S", date_time);
    std::string  dt(buf);





1: 设置core dump文件大小限制 

    ulimit -c unlimited


2: 设置core dump文件格式,并生成在当前可执行文件的同级目录

 sudo sysctl -w kernel.core_pattern="core_%e_%p_%t"

 其中: %e: 可知执行文件名(程序名) %p: 进程ID %t: 保存时间


3:查看当前core dump设置

 cat /proc/sys/kernel/core_pattern


4: 查看core dump 文件大小限制 

    ulimit

static void Get_Now_Time(std::string &outname) { char buf[256]=""; struct tm* date_time; time_t now; time(&now); date_time = localtime(&now); strftime(buf, sizeof(buf)/sizeof(buf[0]), "%Y%m%d_%H%M%S", date_time); outname = std::string(buf); return; }

1、ROS2 开发语言:

       C/C++


2、OpenDDS 

     OpenDDS是一个开源的c++框架,用于在分布式系统中交换数据。

     官网: https://opendds.org/ https://github.com/OpenDDS/OpenDDS 

     开发语言: C++


3、Fast-DDS 

     Fast DDS(以前称为Fast RTPS)是OMG(对象管理组)DDS(数据分发服务)标准的c++实现。

     https://github.com/eProsima/Fast-DDS


4、RTI Connext DDS

      https://www.rti.com/products/dds-standard