Ubuntu 18.04安装fast-dds
提纲
1、概述
2、foonathan_memory_vendor
3、fast-cdr
4、fast-dds
5、编译HelloWorldExample
6、安装fast-dds-gen,使用IDL文件构建代码
1、概述
fastdds是干什么,就不重复说了。
操作系统是Ubuntu18.04
本次采用源码编译安装,需要使用到以下的包:
1.foonathan_memory_vendor
2.fast-cdr
3.fast-dds
2、foonathan_memory_vendor的安装
获取foonathan_memory_vendor:
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
cmake --build . --target install
3、fast-cdr
获取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
cmake --build . --target install
4、fast-dds
获取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
cmake --build . --target install
在编译过程中cmake的版本会过低,18.04更新的cmake为3.10左右,fast-dds需要3.16以上
可以进入cmake官网下载相应版本,我采用的是 cmake-3.16.6.tar.gz
解压后
cd cmake-3.16.6
./bootstrap
make
make install
如果本身的cmake版本很高,可以忽略这步。
如上,完成编译安装后需要添加环境:
gedit ~/.bashrc
export LD_LIBRARY_PATH=/home/mkt/Fast-DDS/install/lib
注意改成自己的路径
5、编译HelloWorldExample
编译成功后开始测试fast-dds的helloworld。
在这一步中,我总是编译不过,卡了好几天,后来周六我自学了cmake的用法,看了b站上的两套cmake视频,才搞懂了cmake的用法。回头来看整个安装过程中涉及到全部cmake命令,搞懂了各个cmake命令的含义,然后再审视这一步中的cmake命令,和执行之后的输出结果,我发现我参考的资料中给出的cmake命令有错误,所以,我按照自己对cmake的理解,重新改造了一下这一步中的cmake命令,重新编译,终于编译成功了。过程很坎坷,结果得来不易。
定位地址~/Fast-DDS/Fast-DDS-master/examples/cpp/dds/HelloWorldExample
cd ~/Fast-DDS/Fast-DDS/examples/cpp/dds/HelloWorldExample
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install
make
获得如下内容:
运行两终端,分别执行发布和订阅
./DDSHelloWorldExample publisher
./DDSHelloWorldExample subscriber
6、安装fast-dds-gen,使用IDL文件构建代码
先安装依赖环境:
sudo apt install openjdk-8-jdk
参考官网执行如下操作:
cd ~~/Fast-DDS/
git clone --recursive https://github.com/eProsima/Fast-DDS-Gen.git
cd Fast-DDS-Gen
gradle assemble #这一步会提示找不到gradle,所以执行这一步之前要先安装gradle
#输出下面的信息,说明fast-dds-gen编译成功了。
BUILD SUCCESSFUL in 13s
6 actionable tasks: 4 executed, 2 up-to-date
#最后配置fast-dds-gen的环境变量
gedit ~/.bashrc
export PATH=/home/mkt/Fast-DDS/Fast-DDS-Gen/scripts:$PATH
source /etc/profile
完成这些就可以使用fastddsgen来通过idl文件生成代码,但是只生成源代码还不够,还需要写cmakelist.txt。
fastddsgen Helloworld.idl
在新路径下拷贝helloworld.idl,执行上述命令,得到如下文件:
至此,fast-dds的基本编译及使用就完成。但是对fastdds的学习来说,这是万里长征的第一步,后续还需要做非常多的工作才能了解fastdds。
参考资料
1、https://blog.csdn.net/mkt123338702/article/details/125880446,这篇文章中有很多细节需要调整,但是文章没有说明,需要自己摸索
2、https://bylee.blog.csdn.net/article/details/124705821,这篇文章主要是参考编译idl。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通