如何启用cycloneDDS的iceoryx
共享内存交换 — 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

浙公网安备 33010602011771号