如何启用cycloneDDS的iceoryx

news/2025/11/3 21:12:31/文章来源:https://www.cnblogs.com/wsttask/p/19188328

共享内存交换 — Eclipse Cyclone DDS,0.11.0

首先我们需要先下载安装iceoryx,因为cycloneDDS如果要使用共享内存传输是依赖于这个插件的。顺带一提,只有同一节点的不同进程间会使用到共享内存,cycloneDDS是根据如果发布者和订阅者的ip相同则使用共享内存。本次教程以安装iceoryx-2.0.6为例

eclipse-iceoryx/iceoryx: Eclipse iceoryx™ - true zero-copy inter-process-communication

先下载压缩包然后解压,我在这里遇到了一个小问题,如果使用finallshell这类软件上传到虚拟机,要注意文件的用户组。比方说我用root用户上传,然后在vscode里面使用普通用户的ssh连接,在修改文件时,就会出现权限问题

未能保存“***”: 无法写入文件”vscode-remote://ssh-remote…No Permissions(FileSystemError):Error:EACCES:permission denied ,open …

因为普通用户可能对root用户拥有的文件夹没有写权限,所以上传文件的时候用普通用户吧

iceoryx在解压之后,先安装必要的依赖包

sudo apt install cmake libacl1-dev libncurses5-dev pkg-config maven

编写编译的脚本程序build.sh

rm build
cmake -Bbuild -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=install -DBUILD_SHARED_LIBS=ON -Hiceoryx_meta
cmake --build build --config Debug --target install

-Bbuild:在和sh文件同级的目录下创建一个build文件夹,将所有编译的中间文件放进去

-DCMAKE_INSTALL_PREFIX:在和sh文件同级的目录下创建一个install文件夹,存放iceoryx编译出来的库文件

-DBUILD_SHARED_LIBS:启用动态库

编译的时候需要联网,iceoryx去gitclone其他的依赖,如cpptoml,如果克隆失败请打开梯子。

接下来在build目录下创建iox_config.toml这个文件,内容如下

[general]
version = 1[[segment]][[segment.mempool]]
size = 16448
count = 32768

之后直接运行iceoryx的可执行程序,注意更改路径

./iceoryx-2.0.6/build/iox-roudi -c ./iceoryx-2.0.6/build/iox_config.toml

第二步编译cycloneDDS

编译dds库的脚本build.sh

rm -rf build
rm -rf install
cmake -Bbuild -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=install -DENABLE_ICEORYX=On -DBUILD_EXAMPLES=On -DCMAKE_PREFIX_PATH=/home/lhj/Desktop/dds/iceoryx-2.0.6/install
cmake --build build --config Debug --target install

-DENABLE_ICEORYX:启用冰羚

-DCMAKE_PREFIX_PATH:设置冰羚的install库目录

编译helloworld buildHelloWorld.sh

cd examples/helloworld
rm -rf build
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=/home/lhj/Desktop/dds/cyclonedds-master/install ..
cmake --build .

-DCMAKE_PREFIX_PATH:设置dds库目录

设置配置文件,创建cycloneDDS.xml

<?xml version="1.0" encoding="UTF-8" ?>
<CycloneDDS xmlns="https://cdds.io/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://cdds.io/config https://raw.githubusercontent.com/eclipse-cyclonedds/cyclonedds/master/etc/cyclonedds.xsd"><Domain Id="any"><General><Interfaces><!-- Specify the network interface by its address --><NetworkInterface address="192.168.116.130"/> 改成你自己的虚拟机ip<PubSubMessageExchange name="iox" library="psmx_iox" config="LOG_LEVEL=INFO;"/></Interfaces><AllowMulticast>false</AllowMulticast> <!-- Explicitly disable multicast --><MaxMessageSize>65500B</MaxMessageSize></General><Internal><Watermarks><WhcHigh>500kB</WhcHigh></Watermarks></Internal><Tracing><Verbosity>config</Verbosity> <!-- 最详细的日志 --><OutputFile>/home/lhj/Desktop/dds/cyclonedds-master/logs/cdds.log</OutputFile> <!-- 日志文件位置 --></Tracing></Domain>
</CycloneDDS>

————————————————
版权声明:本文为CSDN博主「桜SaKu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_73797171/article/details/148192578

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

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

相关文章

老化车

老化车非常好 👍,这个问题在电子制造和测试领域里很关键。 “老化车”(又叫 Burn-in Cart 或 Aging Rack)是用于电子产品在出厂前做 老化测试(Burn-in Test) 的一种设备或平台。 下面我给你系统讲清楚 👇🧭…

Android Studio 2025.2.1 汉化中文包临时解决方案

打开 JetBrains 官网 Chinese ​(Simplified)​ Language Pack / 中文语言包 下载最新版 242.152 版本插件将 zh.242.152.jar 文件解压出来用压缩包工具打开 zh.242.152.jar 找到目录 META-INF 并打开用文本编辑工具打…

Markdown 学习训练

Markdown 学习训练 引用(使用>)这是我的第一篇博客,本篇博客是参照狂神说课程进行学习,目的是为了练习markdown使用语法。主要包含各级标题、字体、图片、代码块、超链接、表格使用语法练习。具体可前往typora官网…

jmeter设置中文页面的两种方法

JMeter设置中文界面有两种方法:临时设置(仅当前会话有效)和永久设置(修改配 置文件后永久生效)。 设置方法 1.临时设置(关闭后恢复英文): 打开JMeter,点击菜单栏“Options”→“Choose Language”→选择“Chi…

win10 下运行aoe2,报错,应用程序无法正常启动 0xc000022

控制面板 →搜索“启用或关闭 Windows 功能”找到并勾选 “旧版组件” → “DirectPlay” → 确定 → 重启电脑。

Python生成器表达式详解(含与列表推导式核心对比、别名探讨)

从“囤货”到“现做”:Python生成器表达式详解(含与列表推导式核心对比) 在Python中,处理数据时经常会遇到一个矛盾:既要简洁的语法,又要避免大量数据占用内存。列表推导式虽能简化代码,却会“一次性生成所有元…

在Fiddler中模拟网络中断,返回500错误的过程

开启断点在 Fiddler 菜单栏点击 Rules → Automatic Breakpoints,选择以下任一断点模式: Before Requests(请求发送前断点):可修改请求后再发送,适合模拟服务器因异常请求返回 500。 After Responses(响应返回后…

P4198 楼房重建 分析

题目概述 题目链接:https://www.luogu.com.cn/problem/P4198。 给出一个 \(x\) 轴长度为 \(n\),\(y\) 轴长度为 \(10^9\) 的二维平面。 一共有 \(n\) 天,第 \(i\) 天令坐标为 \(x_i\) 的线段变长为 \(y_i\)(屋顶就…

构建企业级AI提示词攻击防御体系的实战指南-2025年

构建企业级AI提示词攻击防御体系的实战指南-2025年在人工智能技术深度赋能的2025年,大型语言模型已全面渗透金融、政务、医疗等企业核心业务场景。与此同时,提示词攻击正以惊人的速度演进为企业AI安全的头号威胁。研…

矩阵的秩

设运输问题的约束矩阵为: \[A = \begin{bmatrix} 1 & 1 & 1 & 0 & 0 & 0 \\[6pt] 0 & 0 & 0 & 1 & 1 & 1 \\[6pt] 1 & 0 & 0 & 1 & 0 & 0 \\[6pt] 0 &a…

Python列表推导式完全指南

从循环到一行代码:Python列表推导式完全指南 在Python中,列表推导式(List Comprehension)是一种简洁、高效的创建列表的语法。它能将原本需要多行循环+条件判断的代码,浓缩成一行可读性强的表达式。但对新手来说,…

Rockchip RK3588 - Mali-G610 GPU驱动(mesa+Panthor)

参考文章: [1] Rockchip RK3399 - Mali-T860 GPU驱动(mesa+Panfrost) [2] RK3588关于panthor驱动的移植 [3] ARM Mali GPU Upstream software, aka Lima/Panfrost

如何启用cycloneDDS的iceoryx共享内存?(转载)

我们如果使用的cycloneDDS版本是0.10以上的,用这个官方文档 共享内存交换 — Eclipse Cyclone DDS,0.11.0 如果是以下的,用这个 Shared Memory — Eclipse Cyclone DDS 0.8.2 documentation 首先我们需要先下载…

AI浪潮下的学习与就业:机遇还是陷阱?

最近刷到一堆AI相关的新闻,感觉整个科技圈都炸了。从OpenAI在大学里搞实验,到DeepCode在论文复现代码上碾压人类博士,再到微软悄悄去掉Copilot的警告提示,AI这玩意儿真是越来越猛了。作为一个学软件工程的,我一边…

如何从csdn中快速转载文章(转载)

原文链接:https://www.cnblogs.com/SymPny/p/17570360.html#:~:text=按住Ctrl%2BF快捷键,寻找"article_content" 在编辑界面直接粘贴。 界面如下:,转载成功! 参考文档: https%3A%2F%2Fblog.csdn.net%2F…

win10安装MongoDB 3.0.15 Community

win10安装MongoDB 3.0.15 Community 1、下载MongoDB 下载地址:https://www.mongodb.com/try/download/community-edition/releases/archive安装步骤运行安装程序‌:双击下载好的.msi文件,启动安装向导。接受许可协议…

auto

auto关键字的使用 auto auto关键字是在编译期推到出类型然后替换,auto关键字不允许定义数组,不允许作为普通函数的参数,C++14之前不允许作为函数的返回值但是支持返回值后置,auto修饰的变量必须直接初始化,类内非…

一行“优雅”代码踩爆3x3矩阵:Python列表乘法的“共享引用”陷阱

一行“优雅”代码踩爆3x3矩阵:Python列表乘法的“共享引用”陷阱 很多Python新手初次创建多维列表时,都会被[[0] * 3] * 3这种写法吸引——一行代码搞定3x3矩阵,看起来简洁又聪明。可当你像这样修改一个元素时,却会…

写给创业者新手:什么是MAU指标,什么是ARR、PMF

写给创业者新手:什么是MAU指标,什么是ARR、PMF大家好,我是jobleap.cn的小九。今天谈谈创业者必知必会的基础概念。# MAU MAU(Monthly Active Users)的定义是:**在一个自然月内至少登录或使用过一次产品的独立用户数…

git不小心把本地从未提交过的贮藏的版本删掉了,如何恢复?

事故发生背景:晚上加班不小心把未提交过的本地贮藏删掉了!!! 我是刚删完里面就反应过来,卧槽!!!误删本地贮藏了(因为我本地同时在改好几个需求,可能A需求改一半,还不能提交,所以就暂时贮藏在本地,然后就去…