CycloneDDS(C++版本)开源代码在Linux(X86平台)系统上编译生成可执行文件的详细步骤

此系列总共有四篇,分别为C、C++版本的Cyclonedds在X86、ARM平台上进行编译

1 远程仓库CycloneDDS(C++版本)源码下载

git clone https://github.com/eclipse-cyclonedds/cyclonedds.git
注:可从远程仓库git clone,也可以直接进入github官网下载,下图是从官网直接下载的截图
请添加图片描述

2 创建并进入build目录

C++版本的Cyclonedds源码下载完成以后,进入根目录下
Linux终端输入:mkdir build
build目录:用于存放编译过程中产生的各种文件
Linux终端输入: cd ./build
请添加图片描述

3 指定安装路径与前缀

Linux终端输入:cmake -D CMAKE_INSTALL_PREFIX=<install-location> -D CMAKE_PREFIX_PATH = <cyclonedds-install-location> ..

其中<install-location>是C++的安装位置,是可以自定义,用于存放install时的一些文件
<cyclonedds-install-location>是C的安装位置,是之前编译C版本时所指定的位置(这个位置是有一些模糊,有前辈愿意解惑的话,请留下评论

例如:cmake -D CMAKE_INSTALL_PREFIX=.../install_DDS
其中,install_DDS在源码根目录下新建的目录,用于存放执行install安装命令时生成的文件

CMAKE_PREFIX_PATH = <cyclonedds-install-location>,其中cyclonedds-install-location定位到C版本的编译安装位置,假设C的安装位置在/home/ubuntu/Documents/test_clone/test001/cyclonedds-master/install_dds,那么此
处的步骤见下图所示:

为防止报错,建议CMAKE_INSTALL_PREFIX和CMAKE_PREFIX_PATH一起使用

请添加图片描述
显示configuring done/generating done表示成功!
打开此目录,会生成一些文件,见下图
请添加图片描述

4 编译 cmake --build.

Linux终端输入:cmake --build .
点的目的是因为MakeFile文件在同级目录,此为编译时的重要文件。与make效果相同,cmake --build .的形式可以跨平台,不需要考虑生成器类型。如果生成器是 Ninja ,那么直接使用make就不生效了。
编译开始:

请添加图片描述

显示100%并且不报错表明编译完成
请添加图片描述

5 编译完成后进行安装

Linux终端输入:cmake --build . --target install

请添加图片描述

安装完成之后会将所有的的内容都拷贝到自己选择的安装路径下,即
在此目录下输入ls -a指令,会出现四个目录:lib、bin、include、share,其中share文件有时产生不成功,无妨!

6 版本构建并编译

通过配置构建出debug版本并且进行编译
Linux终端输入:cmake -D CMAKE_BUILD_TYPE=Debug -D BUILD_TESTING=ON ..
其中CMAKE_BUILD_TYPE=Debug构建debug版本
BUILD_TESTING=ON构建测试套件(需要CUnit单元测试框架工具存在)
报错:not find CUnit缺少测试套件
因为cmake -D BUILD_TESTING=ON ..需要CUnit单元测试工具

在上一篇中CycloneDDS(C版本)开源代码在Linux(X86平台)系统上编译生成可执行文件的详细步骤中已经成功安装了CUnit,可以参考。
但是此处的报错是:
could not GTest(missing:GTEST_LIBARARY GTEST_MAIN_LIBRARY)

6.1 Could not find GTest错误解决方法之gtest安装

需要给linux系统安装gtest的单元测试工具,gtest是google的一套用于编写C++测试的框架,构建debug版本就必须存在gtest

6.1.1 googletest下载

https://github.com/google/googletest 可直接官网下载

请添加图片描述
将下载好的压缩文件传输到linux系统上
这里放在/usr/src/目录下
请添加图片描述

6.1.2 sudo mkdir build创建文件

在usr目录下新建文件夹需要root权限,可以i使用sudo
请添加图片描述

6.1.3 sudo cmake … 产生MakeFile文件

请添加图片描述

6.1.4 sudo make 产生库文件(直接产生.a 静态库文件)

产生4个静态库我呢见如下图所示:

请添加图片描述
安装完成之后将这四个静态库文件(.a文件)复制到/usr/local/lib下:
使用指令:sudo cp -r ./*.a /usr/local/lib
完成之后进行安装

6.1.5 sudo make install安装

请添加图片描述
安装完成之后,再次linux终端输入下面命令指定debug版本:
cmake -D CMAKE_BUILD_TYPE=debug -D BUILD_TESTING=ON …
如图显示则证明命令执行成功。
请添加图片描述

6.2 编译构建的版本

在Linux终端输入: cmake --build .进行编译,显示结果如下:
表明新构建的版本编译成功!
请添加图片描述
最后显示100% ,并且最后一行显示:Build target ddscxx_tests

6.3 ctest进行单元测试

Cmake和Ctest可以帮助我们进行项目的构建与测试,前面已经完成了项目的构建,接下来使用ctest进行单元测试。此过程会稍微慢一点。

在linux终端输入:ctest,显示结果如下
如图所示,100% tests passed!证明单元测试全部通过,此步骤完成。

请添加图片描述

请添加图片描述

7 构建和运行往返实例(编译example 有个特别需要注意的点)

此步骤的目的是:构建和运行测量延迟的示例程序
cyclonedds里面已经有现成的实例供我们参考,在根目录下的example目录下面,我们打开此目录,此目录下有CMakeLists.txt文件以及一些其他的文档,我们需要在此目录(example目录)下编译构建出RoundtripPongRoundtripPing两个可执行文件来。
RoundtripPing / RoundtripPong,对应examples/roundtrip,功能为尽最大能力ping pong,pong端接收后将数据返回,ping端指定数据包大小,并记录传输数据包个数及延时分布。

请添加图片描述

我们可以看到cyclonedds-cxx-master包下的example目录下有很多文件,包括CMakeLists.txt等,其中我们要构建的可执行文件所需要的源文件等就在examples/roundtrip

接下来,在example/roundtrip目录下新建build目录

请添加图片描述

在build目录下终端输入cmake ..来此产生MakeFile文件,用于make编译,但是输入cmake ..之后会报错,如下:(图片中是c版本出现的问题截图,不影响,c++也是这个影响,问题是一样的)

在这里插入图片描述
此时,需要在cmake ..指令中指定cyclonedds的安装路径,指令与显示结果如下:

cmake -D CMAKE_PREFIX_PATH=<安装dds目录的绝对路径> ..

这里与前面是对应的,请注意,在第四步中我们指定了安装路径前缀

cmake -D CMAKE_INSTALL_PREFIX= <install-location>..

在这一步也是同样的,cmake -D CMAKE_PREFIX_PATH= <install-location>..

如果在第四步中自己指定了安装路径,此处一定要写正确。

写正确之后运行结果应该如下图所示:
请注意这里写的路径还是c语言编译时候的安装路径)
请添加图片描述
此时我们打开build目录,已经产生了MakeFile文件,终端命令行输入 cmake --build . 进行编译,完成之后产生cxxRoudtripPongcxxRoudtripPing两个可执行文件如下图所示:

请添加图片描述

上述步骤完成之后,在example/build目录下重新打开一个终端命令行窗口将响应ping的应用程序启动:
linux终端输入:./cxxRoudtripPong

请添加图片描述
在另一个终端上启动即将发送的ping程序:
Linux终端输入:./cxxRoudtripPing

显示如下图所示内容,则表示成功。

请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南霹雳堂雷家雷无桀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值