如何啟用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號