• Fast-DDS的代码编译及源码安装-2


    Fast-DDS的代码编译及源码安装

    环境条件:ubuntu 20.04
    1.Java的版本:openjdk-8
    2.Gradle的版本:6.4
    给出官网的地址:https://fast-dds.docs.eprosima.com/en/latest/
    本次安装是基于源码的linux平台安装,其他平台或者其他方式可以自行研究,本文主要目的是总结安装和构建代码过程中出现的问题以及解决方法。
    在这里插入图片描述
    官网提示的安装内容,本次操作是基于cmake的方式进行编译以及安装
    在这里插入图片描述安装编译工具

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

    由于系统默认的安装网址镜像连接很慢并且打不开,这是由于ubuntu20.04 LTS系统默认源source.list文件中http://cn.archive.ubuntu.com/ubuntu/
    采用国内的镜像地址:http://mirrors.aliyun.com/ubuntu并执行

    sudo apt --fix-broken install
    sudo apt-get update可解决安装问题
    
    • 1
    • 2

    安装FastDDS依赖的库

    Asio and TinyXML2 libraries,Asio 是一个用于网络和低级 I/O 编程的跨平台 C++ 库,它提供了一致的异步模型。TinyXML2 是一个简单、小巧、高效的 C++ XML 解析器。
    在 Ubuntu 上使用以下命令:

    sudo apt install libasio-dev libtinyxml2-dev
    
    • 1

    编译安装Foonathan memory,执行命令

    git clone https://github.com/eProsima/foonathan_memory_vendor.git
    
    • 1

    在这里插入图片描述

    mkdir foonathan_memory_vendor/build &&cd foonathan_memory_vendor/build
    
    • 1

    在build的目录下执行:

    cmake .. -DCMAKE_INSTALL_PREFIX=/home/Fast-DDS/install -DBUILD_SHARED_LIBS=ON
    
    • 1

    在这里插入图片描述
    执行:cmake --build . --target install
    在这里插入图片描述

    编译安装Fast CDR,执行命令

    
    
    • 1

    git clone https://github.com/eProsima/Fast-CDR.git

    
    
    • 1

    在这里插入图片描述

    
    
    • 1

    mkdir Fast-CDR/build && cd Fast-CDR/build
    在build目录下执行:
    cmake … -DCMAKE_INSTALL_PREFIX=/home/Fast-DDS/install

    
    
    • 1

    在这里插入图片描述

    执行:cmake --build . --target install
    
    • 1

    在这里插入图片描述

    编译安装Fast-DDS

    
    
    • 1

    git clone git@github.com:eProsima/Fast-DDS.git

    
    
    • 1
    如果通过git无法下载,可以直接去http://gitlab.gwm.cn/if-third-party/fast-dds手动下载
    
    • 1

    在这里插入图片描述

    
    
    • 1

    执行mkdir build && cd build
    在build目录下执行:执行cmake … -DCMAKE_INSTALL_PREFIX=~/dds/fast-dds/install -cmake … -DCMAKE_INSTALL_PREFIX=/home/Fast-DDS/install

    
    
    • 1

    在这里插入图片描述

    执行:cmake --build . --target install
    
    • 1

    在这里插入图片描述
    等待结束即完成
    存在一个install的目录,是Fast-DDS的编译出来的库文件
    在这里插入图片描述
    在这里插入图片描述
    安装java的版本
    可以安装指定版本:见后面

    openjdk-8可以满足当前环境
    sudo apt install default-jre -y(这种方式默认安装最新的导致最后编译失败)
    sudo apt install default-jdk -y(这种方式默认安装最新的导致最后编译失败)
    
    • 1
    • 2
    • 3

    查看java的版本:

    java -version
    
    • 1

    在这里插入图片描述
    安装gradle

    官网安装地址:https://gradle.org/install/
    
    • 1

    在这里插入图片描述
    我这里采用的是手动安装,下载了最新的二进制软件包:
    Step 1. Download the latest Gradle distribution
    在这里插入图片描述
    Step 2. Unpack the distribution
    因为Fast-DDS-Gen在安装的时候,依赖于java的的版本以及gradle的版本,所以此时安装的是最新版本,后面会出现编译问题,所以先不要着急安装,先看文档
    在这里插入图片描述
    在这里插入图片描述
    Step 3. Configure your system environment

    export PATH=$PATH:/home/Fast-DDS/gradle-7.5.1/bin
    
    • 1

    注意:环境变量根据自己的路径配置
    查看版本:gradle -v
    在这里插入图片描述
    暂时先不考虑java的版本以及gradle的版本,极大概率会出现安装不上,后面会修复gradle的版本为6.0

    编译和安装Fast-DDS-Gen

    依次执行命令,从git上下载源码:

    git clone --recursive https://github.com/eProsima/Fast-DDS-Gen.git
    
    • 1

    在这里插入图片描述

    
    
    • 1

    cd Fast-DDS-Gen
    gradle assemble

    
    
    • 1

    在这里插入图片描述
    前面说过,由于java的版本以及gradle的版本过高导致Fast-DDS-Gen安装失败:
    查看java的版本并卸载重新安装:

    java -version
    
    • 1

    在这里插入图片描述
    首先,检查是安装的哪个 OpenJDK包

    dpkg --list | grep -i jdk
    
    • 1

    在这里插入图片描述

    移除 openjdk包
    apt-get purge openjdk*
    卸载 OpenJDK 相关包:
    apt-get purge icedtea-* openjdk-*
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    安装java的openjdk-8版本

    sudo apt install openjdk-8-jdk
    
    • 1

    在这里插入图片描述
    在/home/Fast-DDS/Fast-DDS-Gen的目录下再次安装:
    在这里插入图片描述
    错误的原因是由于gradle的版本与fast-dds-gen的版本不匹配,使用./gradlew assemble的方式,使用gen自己匹配gradlew的版本。
    在这里插入图片描述
    添加环境变量:

    export PATH=/home/Fast-DDS/Fast-DDS-Gen/scripts:$PATH
    
    • 1

    测试安装是否成功:
    新建文件夹,并创建文件idl;
    在这里插入图片描述
    输入终端命令:

    fastddsgen hello.idl
    
    • 1

    在这里插入图片描述
    安装完成

    Gtest的编译和安装

    执行命令:

    git clone https://github.com/google/googletest
    
    • 1

    在这里插入图片描述

    预编译在build目录下
    cmake ..
    
    • 1
    • 2

    在这里插入图片描述

    编译make
    
    • 1

    在这里插入图片描述

    安装sudo make install
    
    • 1

    在这里插入图片描述

    测试

    在这里插入图片描述

    g++ temp.cpp -lgtest -lpthread
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    51单片机毕业设计开题报告建议
    企业知识库管理系统怎么做?
    RSA加密、解密、签名、验签的原理及方法分享
    关于vue ui图形化界面中创建项目时卡住的问题
    51单片机项目(9)——基于51单片机的电子琴设计
    Q-learning如何与ABC等一些元启发式算法能够结合在一起?
    终于有人将jvm讲清楚了,阿里架构师推荐jvm架构解析
    【MetaAI】2023年MetaAI发布的开源模型和工具
    好用的办公软件有哪些
    C++11之继承构造函数(using 声明)
  • 原文地址:https://blog.csdn.net/neuzhangno/article/details/126522960