Linux平台下从源码安装FastDDS(翻译)
3. Linux平台下从源码安装FastDDS本文介绍了从源代码中安装Fast DDS library 的方法以及 Fast DDS-Gen 生成工具的使用源码进行,章节组织如下:Fast DDS 库安装要求依赖Colcon安装CMake 安装Fast DDS-Gen 工具安装要求编译Fast DDS-Gen3.1. Fast DDS库安装该章节描述了linux环
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 和其依赖库。
-
通过下面的命令安装ROS 2开发工具(colcon 和 vcstool) :
pip3 install -U colcon-common-extensions vcstool
注意
如果运行命令后出现环境错误,在
pip3
命令后增加--user
标志。 -
创建一个名为
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
-
编译:
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 ,分为 locally 和 globally 两种。
3.1.4.1. locally安装
-
创建
Fast-DDS
目录用于下载和编译 eProsima Fast DDS 以及其依赖库:mkdir ~/Fast-DDS
-
克隆下面的依赖库代码仓库并且使用 CMake 编译。
-
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
-
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
-
-
当所有依赖库被编译安装后,安装 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-CDR
和 Fast-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
环境变量用于在任何目录下访问这些脚本。
更多推荐
所有评论(0)