Ubuntu 18.04安装fast-dds

news2024/11/18 18:34:52

提纲
1、概述
2、foonathan_memory_vendor
3、fast-cdr
4、fast-dds
5、编译HelloWorldExample
6、安装fast-dds-gen,使用IDL文件构建代码



1、概述

fastdds是干什么,就不重复说了。

操作系统是Ubuntu18.04

本次采用源码编译安装,需要使用到以下的包:
1.foonathan_memory_vendor

2.fast-cdr

3.fast-dds



2、foonathan_memory_vendor的安装

获取foonathan_memory_vendor:

cd ~/Fast-DDS
git clone https://github.com/eProsima/foonathan_memory_vendor.git
mkdir foonathan_memory_vendor/build
cd foonathan_memory_vendor/build
cmake .. -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install -DBUILD_SHARED_LIBS=ON
cmake --build . --target install


3、fast-cdr

获取fast-cdr:

cd ~/Fast-DDS
git clone https://github.com/eProsima/Fast-CDR.git
mkdir Fast-CDR/build
cd Fast-CDR/build
cmake .. -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install
cmake --build . --target install


4、fast-dds

获取fast-dds:

cd ~/Fast-DDS
git clone https://github.com/eProsima/Fast-DDS.git
mkdir Fast-DDS/build
cd Fast-DDS/build
cmake ..  -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install
cmake --build . --target install

在编译过程中cmake的版本会过低,18.04更新的cmake为3.10左右,fast-dds需要3.16以上

可以进入cmake官网下载相应版本,我采用的是 cmake-3.16.6.tar.gz

解压后

cd cmake-3.16.6
./bootstrap
make
make install

如果本身的cmake版本很高,可以忽略这步。

如上,完成编译安装后需要添加环境:

gedit ~/.bashrc 
export LD_LIBRARY_PATH=/home/mkt/Fast-DDS/install/lib

注意改成自己的路径



5、编译HelloWorldExample

编译成功后开始测试fast-dds的helloworld

定位地址~/Fast-DDS/Fast-DDS-master/examples/cpp/dds/HelloWorldExample

cd ~/Fast-DDS/Fast-DDS/examples/cpp/dds/HelloWorldExample
mkdir build
cd build
cmake  -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install
make

获得如下内容:

运行两终端,分别执行发布和订阅

./DDSHelloWorldExample publisher
./DDSHelloWorldExample subscriber




6、安装fast-dds-gen,使用IDL文件构建代码

先安装依赖环境:

sudo apt install openjdk-8-jdk
参考官网执行如下操作:

cd ~~/Fast-DDS/
git clone --recursive https://github.com/eProsima/Fast-DDS-Gen.git
cd Fast-DDS-Gen
gradle assemble #这一步会提示找不到gradle,所以执行这一步之前要先安装gradle

#输出下面的信息,说明fast-dds-gen编译成功了。
BUILD SUCCESSFUL in 13s
6 actionable tasks: 4 executed, 2 up-to-date

#最后配置fast-dds-gen的环境变量
gedit ~/.bashrc
export PATH=/home/mkt/Fast-DDS/Fast-DDS-Gen/scripts:$PATH
source /etc/profile

完成这些就可以使用fastddsgen来通过idl文件生成代码,但是只生成源代码还不够,还需要写cmakelist.txt。

fastddsgen Helloworld.idl

在新路径下拷贝helloworld.idl,执行上述命令,得到如下文件:

至此,fast-dds的基本编译及使用就完成。但是对fastdds的学习来说,这是万里长征的第一步,后续还需要做非常多的工作才能了解fastdds。



参考资料
1、https://blog.csdn.net/mkt123338702/article/details/125880446,这篇文章中有很多细节需要调整,但是文章没有说明,需要自己摸索
2、https://bylee.blog.csdn.net/article/details/124705821,这篇文章主要是参考编译idl。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用二元泊松模型预测2022世界杯8强

用二元泊松模型预测2022世界杯8强 网上有很多文章用双泊松(Double Poisson)模型来预测世界杯比赛结果。但是双泊松模型有一个严重的缺陷,那就是它假设比赛中两队的比分是条件独立的。而我们都知道,在对抗性比赛中,两…

(十二)笔记MQ学习之优劣介绍

((十二)笔记MQ学习之优劣介绍一、MQ的优势1.应用解耦2.异步提速3.削峰填谷二、MQ的劣势1.系统可用性降低2.系统复杂度提高3.一致性问题三、MQ的使用条件四、常见的MQ产品一、MQ的优势 1.应用解耦 使用MQ使得应用解耦,提升容错性…

[附源码]Python计算机毕业设计Django勤工助学管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Linux之基于Centos系统安装Redis、MySQL、Nginx

一. Redis的安装 1. 准备 (1). 宿主机:centos 8.0 (2). Redis源码:【压缩包: redis-5.0.0.tar.gz】 需要自行编译。 (PS:这个压缩包可以直接Centos系统中在线下载 或者去Redis官网先下载,然后copy到Centos系统中) …

Java入门教程(4)——JDK环境变量的配置

1 1.path是一个常见的环境变量,它告诉系统除了在当前目录下寻找此程序外,还可以到path指定的目录下寻找。 2.JAVA_HOME (1) 为以后其他软件寻找JDK做准备 classpath不需配置 3.JDK1.5以上版本,JRE会自动搜索当前路径下的类文件及相关jar…

在浏览器中输入url回车后发生了什么

1.dns进行解析:将url地址(www.bilibili.com)解析成ip地址(110.43.34.184),ip地址就是想要访问的服务器的地址 dns就是数据库,这个数据库中记录着url地址和ip地址的对应关系 2.正式发送数据之前…

react 初体验

react笔记 创建一个项目 npm install -g create-react-app // 全局安装脚手架 create-react-app react-01 // 新建一个项目 npm start快捷定义组件 安装组件后,快捷命令 rcc :类式组件 rfc:函数式组件 axios开启代理 在package.json中新…

为什么我推荐你一定要学Python?

很多初学者都听说python很火,可是为啥要学Python,下面谈谈我的感悟 python语言是我目前为止用的最爽的语言,因为它真的很优美.虽然c,c,java也非常的强大和伟大,但是每一种语言伟大的背后都是有一定的时代背景。 说起Python这门编…

VINS学习02——VINS系列代码所有依赖库安装(保姆级)

0.简介 在学习视觉SLAM过程中,先后用了VINS_mono,VINS_Fusion,Omni_swarm,因为是第一次做视觉相关定位,所以大部分库都是第一次装,中间还从虚拟机换到双系统,意识到记录的重要行性,所以在此记录安装相关依赖库的教程。…

python 练习题

for 循环 和 while 循环 判断101-200之间有多少个素数,并输出所有素数。 (什么是素数(质数): 除了1和它本身,不能被其他的数整除) 方法1: count 0 # 设定素数的初始个数为0 for num in range…

MySql使用MyCat分库分表(四)分片规则

视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili 笔记参考地址:MySQL 分库分表 | xustudyxus Blog (frxcat.fun) 分片规则 范围分片 介绍 根据指定的字段及其配置的范围与数据节点的对应情况, 来决定该数据属于哪一个分片。 配置 …

Angular 应用开发里使用 ForRoot 解决 Lazy Loaded Module 里单例行为丢失的问题

笔者在 Angular 实际项目开发中曾经遇到这样一个需求: 我们想创建一个共享模块,它将包含一个配置来设置布尔值(作为标志)以启用或禁用其他模块的某些功能。 其他模块可以在 Angular 应用程序的引导期间加载,也可以是延…

JVM基本常识

目录 内存区域划分 类加载 何时触发类加载? 双亲委派模型 GC GC回收那部分内存? 怎么回收? 怎么找垃圾(判定某个对象是否是垃圾) 具体怎么回收? 我的GitHub:Powerveil GitHub 我的Gitee:Powercs12…

痞子衡嵌入式:浅析IAR下调试信息输出机制之半主机(Semihosting)

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是IAR下调试信息输出机制之半主机(Semihosting)。 在嵌入式世界里,输出打印信息是一种非常常用的辅助调试手段,借助打印信息,我们可以比较容易地定位和…

由浅到深-模拟实现list

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一 、见见…

Acrel-2000Z电力监控系统在某数据中心的应用-Susie 周

1、概述 随着网络和信息技术的快速发展,人们对“大数据”业务需求不断增长,为了满足日益增长的应用需求,数据的建设规模也在向超大型、园区级数据方向发展。通信、金融、商业等行业,面对未来数据业务的爆发式增长需求&#xff0c…

Go cobra 库学习

cobra既是一个用于创建强大现代CLI应用程序的库,也是一个生成应用程序和命令文件的程序。cobra被用在很多go语言的项目中,比如 Kubernetes、Docker、Istio、ETCD、Hugo、Github CLI等等 其实简单的来说,cobra就是一个自定义命令工具&#xff…

从IPC到分布式软总线的随笔

在Linux 系统中, 客观来说,缺乏相对开发者比较友好的进程间通信框架。谈到Linux上进程间通信,一般都会想起管道(匿名、有名)、信号/信号灯、共享内存、消息队列和socket。这些都是偏低层的技术,有没有方便开…

HummerRisk 入门3:开发手册

本文是 HummerRisk 的开发手册,介绍项目的结构及如何配置 HummerRisk 的开发环境和开发中的注意事项,快速参与到 HummerRisk 项目的开发中来。 一、项目结构 二、配置开发环境 1、环境准备 后端 HummerRisk 后端使用了 Java 语言的 Spring Boot 框架…

从今天起真正释放创造力 | Werner Vogels 在 re:Invent 2022带来多项开发者福音

对于开发者而言,成就感来自于每一次敲下代码后可实现的创造力,而不是把时间和精力消耗在写千篇一律又无法复用的“胶水”代码,或是在越来越复杂的软件栈面前,疲惫地写业务流程并尽量减少 Bug。 更加不堪的是,有时仅仅…