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

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

1 远程仓库CycloneDDS源码下载

git clone https://github.com/eclipse-cyclonedds/cyclonedds.git
注:可从远程仓库git clone,也可以直接进入github官网下载
CyloneDDShttps://github.com/eclipse-cyclonedds/cyclonedds.git

2 创建build目录

下载CycloneDDS源码之后,在其根目录下打开Linux命令终端:mkdir build
目的:用于存放编译过程中各种生成文件,主要是用来存放MakeFile文件以及可执行文件

3 进入build目录

Linux终端输入:cd ./build
注:一般我们在build目录下进行编译,可以将过程中的生成文件禁锢于此目录下。在此目录下cmake .. 创建MakeFile文件之后利用make命令进行编译处理。
cmake .. :两个小点的原因是因为,源码中的CMakeLists.txt在新建的build目录的上层目录中,要通过cmake .. 生成MakeFile文件最后编译出可执行文件来必须要在CMakeLists.txt同级目录下使用cmake ..

4 指定安装路径前缀

Linux终端输入:cmake -D CMAKE_INSTALL_PREFIX=<install-location> ..
例如:cmake -D CMAKE_INSTALL_PREFIX=/home/ubuntu/Documents/.../install_dds
其中,install_dds在源码根目录下新建的目录,用于存放执行install安装命令时生成的文件

命令解析:
cmake -D CMAKE_INSTALL_PREFIX=<install-location> ..
Cmake -D :称为CMake编译选项,常见的有-G、-D等。因为CMake是根据当下环境中不同的编译器来生成不同的中间项文件,所以-D的作用就是告诉Cmake在cmake -D后面要配置一些参数了,如:
cmake -D CMAKE_BUILD_TYPE=debug:指定CMake的构建版本,默认情况下构建的版本是release,所以在指定debug之后才能构建出供调试的版本。
其中CMAKE_INSTALL_PREFIX是CMake的内置变量,也称为预定义变量,是用来设置安装路径前缀的,即用于指定CMake在执行install命令时候的位置,如果不进行指定,则使用默认位置/usr/local(Linux系统下的默认路径,windows应该会有不同)安装CycloneDDS目录以及产生的构建文件等。
故,cmake -DCMAKE_INSTALL_PREFIX等内置变量是联合使用的,起作用就是后者的作用,联合起来只是语法的需要。
当有多个需要的参数时,写成cmake -D XXX -D XXX ....... -D XXX即可。

结果演示:

指定CMake安装路径
图中:cyclonedds-master是clone下来的源码包,build是在其下新建的包,终端命令的意思是在cyclonedds-master目录下新建install_dds目录作为安装目录
请添加图片描述

显示 configuration done 、generation done表示配置路径成功
请添加图片描述
此时我们打开build目录,生成MakeFile文件以及一些过程文件,如下图所示:
在这里插入图片描述

5 编译 cmake --build

Linux终端输入:cmake --build .,点的目的是因为MakeFile文件在同级目录,此为编译时的重要文件。与make效果相同,cmake --build .的形式可以跨平台,不需要考虑生成器类型。如果生成器是 Ninja ,那么直接使用make就不生效了。
编译开始:
请添加图片描述
显示100%并且不报错表明编译完成
在这里插入图片描述

6 编译完成后进行安装

Linux终端输入:cmake --build . --target install
开始安装:
请添加图片描述
安装成功,安装结果均在install_dds中
请添加图片描述
安装完成之后会将所有的的内容都拷贝到自己选择的安装路径下,即
/Documents/test_clone/test001/cyclonedds-master/install_dds
在此目录下输入ls -a指令,会出现四个目录:lib、bin、include、share,其中share文件有时产生不成功,无妨!

7 版本构建并编译

通过配置构建出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单元测试工具
注意:此处路径可能不同,是为了验证并解决错误,不必介怀,等问题解决之后后面的步骤便会相同,屏幕前的你在看时权当一样便可
在这里插入图片描述
Ubuntu下Cunit安装需要root权限,但可以通过Linux系统镜像源下载
注:安装CUnit之前首先需要安装libtool、libtool-bin等,因为企业不能进入外网(如果是有网的情况,直接命令行下载就行了),所以只能离线安装,较为麻烦,各软件之间可能存在依赖关系,版本也不好控制,所以采用镜像源下载最为稳妥。

7.1 虚拟机网络桥接

首先在添加镜像源之前完成主机与Linux系统网络桥接操作:

  1. 电脑连接网线,接通内网
  2. 通过设置虚拟机网卡,连通主机与虚拟机之间的网络
    在虚拟机菜单栏找到【虚拟机】-【设置】。添加网络适配器,选择桥接模式,将计算机网络桥接到虚拟机上面
    在这里插入图片描述
  3. 计算机命令行输入ipconfig查看主机IP地址,在Linux终端如果ping通,则说明网络桥接成功
    例如:主机IP为10.32.78.000
    ping 10.32.78.000,如下图所示,则网络桥接成功。
    在这里插入图片描述

7.2 镜像源添加

在Linux根目录下找到/etc/apt文件中的sources.listvim sources.list(vi /etc/apt/sources.list)进入之后粘贴以下镜像源地址(注:公司内部的镜像源一般是内定的,自己下载的加入不了)
在这里插入图片描述
要输入的镜像源如下(公司内部镜像源不宜公开,先将国内的一些镜像源罗列于此):

【Ubuntu换源】Ubuntu换国内镜像源
通过上述步骤完成更新镜像源操作之后,运行如下指令进行刷新:sudo apt update

7.3 CUnit单元测试工具安装

首先说明一点,如果这种方法搞不定,那就试试这种离线安装的方法,包过篇,这篇离线安装较为麻烦一点,但是一定能成功,童叟无欺Linux(Ubuntu版本)上离线安装CUnit来解决Could not find CUnit(missing:CUNIT_LIBRARY)

前面Could not find CUint报错的命令为:cmake -D CMAKE_BUILD_TYPE=Debug -D BUILD_TESTING=ON .. ,但一引起报错的仅为cmake -D BUILD_TESTING=ON ..部分,下面是验证结果:
在这里插入图片描述
在这里插入图片描述
下面安装CUnit单元测试工具,通过指令进行安装:
sudo apt install libtool libcunit1 libcunit1-dev libcunit1-doc libcunit1-ncurses libcunit1-ncurses-dev
在这里插入图片描述
因为此条指令安装东西较多,有可能不会一次性全部成功,若没有一次成功,便根据报错信息继续安装即可,若libcunit1 libcunit1-dev没有安装成功,我们继续进行安装即可。
在这里插入图片描述
其中有哪项没有完成安装报错,单个安装也可
在这里插入图片描述
显示下图所示信息表示CUnit安装前的准备工作已经完成
在这里插入图片描述
下面安装CUnit:通过指令:sudo apt install *cunit*:
在这里插入图片描述
如果在此过程中发生报错显示前面的安装选项没有完成,可通过之前图中所示的指令进行再次安装,显示以下内容证明CUnit安装成功。
在这里插入图片描述
在这里插入图片描述
两条指令同时执行:
cmake -D CMAKE_BUILD_TYPE=Debug -D BUILD_TESTING=ON ..
如果显示如下图所示,则指令执行成功。
请添加图片描述

7.4 编译构建的版本

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

7.5 ctest进行单元测试

CMake和ctest可以帮助我们进行项目的构建与测试,前面已经完成项目的构建,接下来使用ctest进行单元测试,此过程会稍微慢一些。
在Linux终端输入:ctest,显示结果如下。
100% tests passed!证明单元测试全部通过,此步骤完成。

请添加图片描述

请添加图片描述

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

此步骤的目的是:构建和运行测量延迟的示例程序
cyclonedds里面已经有现成的实例供我们参考,在根目录下的example目录下面,我们打开此目录,此目录下有CMakeLists.txt文件以及一些其他的文档,我们需要在此目录(example目录)下编译构建出RoundtripPongRoundtripPing两个可执行文件来。
RoundtripPing / RoundtripPong,对应examples/roundtrip,功能为尽最大能力ping pong,pong端接收后将数据返回,ping端指定数据包大小,并记录传输数据包个数及延时分布。
请添加图片描述
我们可以看到cyclonedds-master包下的example目录下有很多文件,包括CMakeLists.txt等,其中我们要构建的可执行文件所需要的源文件等就在examples/roundtrip
接下来,在example/roundtrip目录下新建build目录,在build目录下终端输入cmake ..来此产生MakeFile文件,用于make编译,但是输入cmake ..之后会报错,如下:

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

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

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

cmake -D CMAKE_INSTALL_PREFIX= ..

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

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

写正确之后运行结果应该如下图所示:
前面指定的安装目录是:
cmake -D CMAKE_INSTALL_PREFIX=/home/ubuntu/Documents/test_clone/test001/cyclonedds-master/install_dds ..
那么此处就为:
cmake -D CMAKE_PREFIX_PATH=/home/ubuntu/Documents/test_clone/test001/cyclonedds-master/install_dds ..

请添加图片描述

此时我们打开build目录,已经产生了MakeFile文件,终端命令行输入cmake --build .进行编译,完成之后产生RoundtripPong和RoundtripPing两个可执行文件如下图所示:
请添加图片描述

上述步骤完成之后,重启一个终端,在build目录下打开,并启动将响应 ping 的应用程序
Linux终端输入:./RoundtripPong
请添加图片描述

在另一个终端上(同样在build
目录下)启动将发送 ping 的应用程序
Linux终端输入:./RoundtripPing 0 0 0
显示如下图所示内容,则表示成功。

请添加图片描述

完结撒花~~~么么哒~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江南霹雳堂雷家雷无桀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值