使用cmake安装 fast-DDS

本文指导如何在Ubuntu20.04的RK3399开发板上使用CMake安装Fast-DDS,包括安装基础环境、处理Python3-pip问题、安装Asio、TinyXML2、OpenSSL、Libp11和SoftHSM等依赖库,以及CMake全局和运行应用程序的配置。
摘要由CSDN通过智能技术生成

使用cmake安装 fast-DDS

一、使用环境

开发板RK3399

Ubuntu20.04

二、安装

本教程的安装过程完全按照官方文档的安装方法,完全使用Cmake编译安装;
官方文档领路:官方:从源代码安装 — 快速 DDS 2.12.0 文档 (eprosima.com)

1. 安装基础环境

基础工具安装:

sudo apt install cmake g++ python3-pip wget git

这里我的RK3399开发板的系统环境出现问题:

提示没有安装安装python3-pip

安装python3-pip出现问题:

​ python3-pip : Depends: python3-wheel but it is not going to be installed
​ Depends: python-pip-whl (= 20.0.2-5ubuntu1.9) but it is not going to be installed
sunloginclient : Depends: libwebkit2gtk-4.0-37 but it is not going to be installed
E: Unmet dependencies. Try ‘apt --fix-broken install’ with no packages (or specify a solution).

解决方案: ubuntu 安装 pip3 报错 python3-pip : 依赖: python-pip-whl (= 8.1.1-2ubuntu0.4) 但是 9.0.1-2.3~ubuntu1.(已解决)_S1ls的博客-CSDN博客

sudo apt-get remove python-pip-whl
sudo apt -f install
sudo apt update && sudo apt dist-upgrade
sudo apt install python3-pip

2. 安装依赖关系

eProsima Fast DDS 在从 Linux 环境中的源代码安装时具有以下依赖项:

2.1. Asio 和 TinyXML2 库

Asio 是一个用于网络和低级 I/O 编程的跨平台C++库,它提供了一致的 异步模型。 TinyXML2是一个简单,小巧,高效的C++XML解析器。 使用相应 Linux 发行版的包管理器安装这些库。 例如,在 Ubuntu 上使用以下命令:

sudo apt install libasio-dev libtinyxml2-dev
2.2. 开放SSL

OpenSSL 是用于 TLS 和 SSL 协议的强大工具包,也是一个通用加密库。 使用相应 Linux 发行版的包管理器安装 OpenSSL。 例如,在 Ubuntu 上使用以下命令:

sudo apt install libssl-dev
2.3. Libp11 和 SoftHSM 库

Libp11 为 OpenSSL 提供 PKCS#11 支持。这是一个可选的依赖项, 仅当 eprosima 快速 DDS 与安全性和 PKCS#11 URI 一起使用时,才需要这样做。

使用相应 Linux 发行版的包管理器安装 libp11。 例如,在 Ubuntu 上使用以下命令:

sudo apt install libp11-dev libengine-pkcs11-openssl

SoftHSM是HSM(硬件安全模块)的软件实现。 如果激活了eProsima快速DDS测试并安装了libp11 在系统上,还需要 SoftHSM 来运行 PKCS#11 功能的测试。

使用相应 Linux 发行版的包管理器安装 SoftHSM。 例如,在 Ubuntu 上使用以下命令:

sudo apt install softhsm2

请注意,softhsm2 软件包会创建一个名为 softhsm 的新组。挨次 要授予对 HSM 模块的访问权限,用户必须属于此组。

sudo usermod -a -G softhsm <user>

OpenSSL通过其引擎功能访问HSM和其他硬件设备。 为了设置一个新的引擎,OpenSSL配置文件(通常是/etc/ssl/openssl.cnf) 必须更新指定 libp11 和硬件模块(此处为 SoftHSM)动态库 位置。

使用p11kit可以避免此配置步骤,它允许OpenSSL查找PKCS#11 运行时的设备,无需静态配置。该套件通常通过以下方式获得 Linux 分发包管理器。例如,在 Ubuntu 上:

sudo apt install libengine-pkcs11-openssl

安装后,要检查 p11kit 是否能够找到 SoftHSM 模块,请使用:

p11-kit list-modules

为了检查OpenSSL是否能够访问PKCS#11引擎的使用:

openssl engine pkcs11 -t
2.4. 测试对象

GTest 是一个用于C++的单元测试库。 默认情况下,eProsima Fast DDS不编译测试。 在调用 colconCMake 时,可以使用合适的 CMake 配置选项激活它们。 有关更多详细信息,请参阅 CMake 选项部分。 同时将 Gtest 存储库添加到工作区目录中。

git clone https://github.com/google/googletest src/googletest-distribution
2.5. XML 验证工具

XML 验证是引入的新命令,用于通过快速 DDS CLI 根据 XSD 架构验证 XML 配置文件。 这可确保使用 xml 配置文件正确描述实体。

有关更多详细信息,请参阅 xml 部分。

安装 xmlschema 依赖项以便能够使用此可选工具。

3. CMake 安装

本节介绍如何在本地或全局使用 CMake 编译 eProsima Fast DDS

3.1. 全局安装
  1. 创建一个目录来下载和构建eProsima Fast DDS及其依赖项:Fast-DDS

    mkdir ~/Fast-DDS
    
  2. 克隆以下依赖项并使用 CMake 编译它们。

    • Foonathan memory

      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=/usr/local/ -DBUILD_SHARED_LIBS=ON #给全局安装
      
      sudo cmake --build . --target install
      
    • 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=/usr/local/ -DBUILD_SHARED_LIBS=ON #给全局安装
      
      sudo cmake --build . --target install
      
  3. 安装完所有依赖项后,安装 eProsima 快速 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=/usr/local/ -DBUILD_SHARED_LIBS=ON #给全局安装
    
    sudo cmake --build . --target install
    

注意

默认情况下,eProsima Fast DDS不编译测试。 但是,可以通过下载和安装 Gtest 来激活它们。

3.3. 运行应用程序

使用 eProsima Fast DDS 运行应用程序实例时,必须将其与库链接,其中 已安装软件包,在系统范围安装的情况下为:(如果本地安装) 使用安装,调整正确的目录)。 有两种可能性:/usr/local/lib/

运行Fast-DDS,需要配置环境变量:

  • 临时配置:通过键入以下命令在本地准备环境:

    export LD_LIBRARY_PATH=/usr/local/lib/
    
  • 永久配置:通过键入以下内容将其永久添加到 中:PATH

    echo 'export LD_LIBRARY_PATH=/usr/local/lib/' >> ~/.bashrc
    

三、测试代码

网上的参考代码基本上都参照了官方给出的例子:1.3. 编写一个简单的C++发布者和订阅者应用程序 — 快速 DDS 2.12.0 文档 (eprosima.com)

这里不再展开。

参考例子:喏,你要的DDS教程|FastDDS初体验-源码编译&安装&测试 - 知乎 (zhihu.com)

测试程序可以从github上下载然后运行:

git clone https://github.com/fishros/dds_tutorial.git
cd dds_tutorial/examples/01-hellofishros
cmake ..
make
./DDSHelloFishRosPublisher
./DDSHelloFishRosSubscribe

img

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值