3. Linux平台下从源码安装FastDDS

本文介绍了从源代码中安装Fast DDS library 的方法以及 Fast DDS-Gen 生成工具的使用源码进行,章节组织如下:

3.1. Fast DDS库安装

该章节描述了linux环境下使用源码安装eProsima Fast DDS的流程。下面这些依赖包需要先被安装:

  • foonathan_memory_vendor, STL兼容的C++内存分配.

  • fastcdr,支持 standard CDR 序列化机制的C++序列化库

  • fastrtps, eProsima Fast DDS 库的核心库

首先,安装Fast DDS库的需要满足下面的3.1.1章节的要求和3.1.2章节的依赖,然后,用户可以选择采用 CMake或者colcon 来进行安装。

3.1.1. 要求

linux环境下使用源码安装 eProsima Fast DDS 要求系统首先要安装还有下面的工具:

3.1.1.1. CMake, g++, pip3, wget and git

标题所列的这些包提供了在命令行中安装eProsima Fast DDS和其依赖库所需要的工具。可以使用linux发行版本中提供的包管理工具来安装 CMake, g++, pip3, wget and git 。举例来说,在Ubuntu下使用下面命令可以完成这些包的安装:

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

3.1.1.2. Gtest

GTest是一个C++单元测试的库,默认情况下 eProsima Fast DDS 不编译测试应用。但是可以通过在调用 colcon 或者CMake 时调整 CMake配置选项 来激活单元测试应用的编译。可以参考 CMake options 章节获取更多的细节,同时,你可以通过下面的命令将Gtest 仓库 添加到工作目录:

git clone https://github.com/google/googletest src/googletest-distribution

3.1.2. Dependencies

eProsima Fast DDS 在linux环境下通过二进制进行安装时依赖下面的这些库:

3.1.2.1. Asio and TinyXML2 库

Asio时一个跨平台的C++网络和底层IO通信库,该库提供了异步网络通信模型支持。TinyXML是一个简单高效的C++ XML解析库,在linux发行版中使用包管理安装这些库,例如,在Ubuntu下可以使用下面的命令进行安装:

sudo apt install libasio-dev libtinyxml2-dev

3.1.2.2. OpenSSL

OpenSSQL是一个支持TLS和SSL协议以及加解密的功能强大的工具,在Linux发行版下用下面的命令安装 OpenSSL:

sudo apt install libssl-dev

3.1.3. Colcon 安装

colcon 是一个基于 CMake 的命令行工具,意在编译软件集合。这个本章节展示了如何使用colcon来编译 eProsima Fast DDS 和其依赖库。

  1. 通过下面的命令安装ROS 2开发工具(colconvcstool) :

    pip3 install -U colcon-common-extensions vcstool

    注意

    如果运行命令后出现环境错误,在 pip3 命令后增加 --user 标志。

  2. 创建一个名为 Fast-DDS 的目录,然后下载用于安装 eProsima Fast DDS 和其依赖库的代码仓库:

    mkdir ~/Fast-DDS
    cd ~/Fast-DDS
    wget https://raw.githubusercontent.com/eProsima/Fast-DDS/master/fastrtps.repos
    mkdir src
    vcs import src < fastrtps.repos
  3. 编译:

    colcon build

注意:

因为Colcon是基于 CMake 的, 因此是可以将CMake的编译配置和选项用到 colcon build 的编译命令中。对于Colcon语法的更多信息可以参考colcon 手册的 CMake specific arguments 页面。

3.1.3.1.运行基于FastDDS的应用

当我们要运行使用了 eProsima Fast DDS的应用时需要手工设置被colcon覆盖的 Fast-DDS 目录路径,有两种设置方法:

  • 打开一个新的shell会话时输入下面的命令来重新准备环境,设置Fast-DDS目录路径:

    source ~/Fast-DDS/install/setup.bash
  • 使用下面的命令重新设置被colon覆盖的Fast-DDS目录的路径:

    echo 'source ~/Fast-DDS/install/setup.bash' >> ~/.bashrc

3.1.4. CMake 安装

下面这个章节说明了如何使用 CMake 来编译 eProsima Fast DDS ,分为 locallyglobally 两种。

3.1.4.1. locally安装

  1. 创建 Fast-DDS 目录用于下载和编译 eProsima 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=~/Fast-DDS/install -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=~/Fast-DDS/install
      sudo cmake --build . --target install
  3. 当所有依赖库被编译安装后,安装 eProsima 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 -DCMAKE_PREFIX_PATH=~/Fast-DDS/install
    sudo cmake --build . --target install

3.1.4.2. Global 安装

在系统中安装 eProsima Fast DDS ,需要移除 Fast-CDRFast-DDS 编译配置步骤中使用的-D标志(cmake .. -D),并且在编译安装 foonathan_memory_vendor 时,-D配置选项换成如下配置::

-DCMAKE_INSTALL_PREFIX=/usr/local/ -DBUILD_SHARED_LIBS=ON

3.1.4.3. 运行应用

当运行使用了 eProsima Fast DDS 的应用时,应用需要链接一些依赖库,这些依赖库在全局(global)安装时被安装在了: /usr/local/lib/ 路径下,需要通过下面的方法(二选一)设置链接库路径:

  • 命令行中手动导出依赖库路径到LD_LIBRARY_PATH环境变量:

    export LD_LIBRARY_PATH=/usr/local/lib/
  • 永久将Fast DDS依赖库所在路径添加到 PATH :

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

3.2. Fast DDS-Gen 安装

本章节提供了在linux环境下从源代码安装 Fast DDS-Gen 的方法。Fast DDS-Gen 是一个Java应用程序,其可以使用IDL文件产生源代码文件。可以参考 Introduction 获取更多信息。

为了编译 Fast DDS-Gen ,下面的库需要在系统中被安装:

3.2.1.1. Java JDK

JDK是一个开发环境,用于编译java语言编写的应用和组件。可以从 Oracle website 获取下载和安装方法。

3.2.1.2. Gradle

Gradle是一个开源自动编译工具。可以按照自己的喜好下载一个稳定版本的 Gradle

3.2.2. 编译 Fast DDS-Gen

上当Java JDK和Gradle都安装后,就可以按照下面的步骤下载和编译 Fast DDS-Gen :

cd ~
git clone --recursive https://github.com/eProsima/Fast-DDS-Gen.git
cd Fast-DDS-Gen
gradle assemble

注意

如果在编译Gradle时出现错误,或者你不想安装Gradle,可以用下面命令来进行临时下载用以完成编译步骤。

./gradlew assemble

3.2.2.1. Contents

Fast-DDS-Gen 目录包含下列软件包:

  • share/fastddsgen, 用于IDL生成代码的java应用.

  • scripts, 包含用户经常使用的脚本:

    注意

    需要将该目录路径添加到 PATH 环境变量用于在任何目录下访问这些脚本。

Logo

更多推荐