【OpenDDS学习笔记】ubuntu22.04上搭建OpenDDS环境

在这里插入图片描述

检测Perl

如果系统中没有Perl,需要额外安装,不过ubuntu22.04上貌似已经集成了。

执行命令如下:

perl -v

在这里插入图片描述

ACE+TAO和OpenDDS安装

下载

ACE+TAO下载地址:ACE+TAO
OpenDDS下载地址:OpenDDS

注意:
ACE+TAO下载选择FULL版本
Linux下选择*.tar.gz格式

在这里插入图片描述

然后开始解压

udo tar -zxvf ACE+TAO-7.0.6.tar.gz -C /opt
sudo tar -zxvf OpenDDS-3.20.tar.gz -C /opt

在/opt目录下已存在ACE_wrappers和OpenDDS-3.13.2两个文件夹,修改其权限:


cd /opt
sudo chmod 777 -R ACE_wrappers/
sudo chmod 777 -R OpenDDS-3.20/

在这里插入图片描述

环境变量配置

执行命令:

sudo vim /etc/profile

在文件末尾添加以下内容:

# ACE+TAO+DDS Environment
export ACE_ROOT=/opt/ACE_wrappers
export TAO_ROOT=$ACE_ROOT/TAO
export DDS_ROOT=/opt/OpenDDS-3.20
export PATH=$ACE_ROOT/bin:$DDS_ROOT/bin:$PATH
export LD_LIBRARY_PATH=$ACE_ROOT/lib:$DDS_ROOT/lib:$LD_LIBRARY_PATH

注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效.

配置config.h

执行命令如下:

cd /opt/ACE_wrappers/ace
vim config.h

添加内容如下:

#include "ace/config-linux.h"
配置Platform_macros.GNU

执行命令如下:

cd /opt/ACE_wrappers/include/makeinclude
vim platform_macros.GNU

添加内容如下:

include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU

编译(实验使用版本,但是有些问题)

ACE编译
cd $ACE_ROOT
make clean   //清除上次的make命令所产生文件,第一次编译可以不运行
make
TAO编译
cd $TAO_ROOT
make clean   //清除上次的make命令所产生文件,第一次编译可以不运行make
make
DDS编译
cd $DDS_ROOT
./configure     //DDS配置,有的帖子没有缺少这一步,后面编译会出问题
make clean      //清除上次的make命令所产生文件,第一次编译可以不运行make
make

检测是否安装成功

这里我们可以使用源码中提供的脚本进行验证:

cd $DDS_ROOT/example/DCPS/Messenger_Imr
perl ./run_test.pl

运行时候报错:

在这里插入图片描述

进入对应的路径进行重亲make,发现了原因:
···
make[1]: 离开目录“/opt/ACE_wrappers/TAO/orbsvcs/ImplRepo_Service”

make[1]: 进入目录“/opt/ACE_wrappers/TAO/orbsvcs/ImplRepo_Service”

ImR_Locator will not be built due to the following missing library: ACEXML_Parser ACEXML
···

因为编译时候东西太多,而且时间比较长,所以这部分很容易被忽略。

既然找到了问题,那么就来看看如何解决问题了。

/opt/ACE_wrappers的目录下有个文件夹./ACEXML/parser/parser/这里放着ACEXML_Parser 相关的源码。

看来是这部分的源码没有被编译,我们直接在./ACEXML/里执行编译:

make

编译成功后,进入到/opt/ACE_wrappers/TAO/orbsvcs/ImplRepo_Service路径继续执行编译:

make

接下来我们就可以继续执行测试了,执行后发现又有了新的问题:

在这里插入图片描述

应该是编译的时候没有全部编译完全,上面的对上面的编译手顺做一个修改(最下面的最终版本)。

继续解决问题,可以在目录/opt/ACE_wrappers/TAO/orbsvcs/ImplRepo_Service找到对应的库文件,说明库已经被生成了:

在这里插入图片描述

那就是环境变量的问题了。

lib目录下也找到了对应的库:

在这里插入图片描述

最后发现是我自己电脑环境以前安装过FastDDS,修改.bashrc文件,添加过:

export LD_LIBRARY_PATH=/home/xiaoqing/Fast-DDS/install/lib

将上文中的针对LD_LIBRARY_PATH的相关设定给改写了。

这里我们改回来后再次验证, 又出现新的问题:

在这里插入图片描述
Oh,My GOD. 没完没了。

继续看一下这个没有被找到的publisher和subscriber。

在目录/opt/OpenDDS-3.20/examples/DCPS/Messenger_Imr下可以看到他们的源码,但是没有make文件,所以并没有被编译成可执行文件,这有点奇怪。

再看了下源码路径下有个/opt/OpenDDS-3.20/DevGuideExamples/DCPS/Messenger.minimal里面也是测试例子,猜测是因为版本的问题路径修改了,这里我们再次执行测试例子:

cd $DDS_ROOT/DevGuideExamples/DCPS/Messenger.minimal
perl ./run_test.pl

可以执行了。_

大功告成。

执行结果:

/opt/OpenDDS-3.20/bin/DCPSInfoRepo -ORBDebugLevel 10 -ORBLogFile DCPSInfoRepo.log -o repo.ior
TAO (5187|5187) - Completed initializing the process-wide service context
TAO (5187|5187) - Default ORB services initialization begins
TAO (5187|5187) - ORBInitializer_Registry::register_orb_initializer 0 @0x55b7eea5ac70
TAO (5187|5187) - ORBInitializer_Registry::register_orb_initializer 1 @0x55b7eea53e60
TAO (5187|5187) - Default ORB services initialization completed
TAO (5187|5187) - We are the default 3.0.6 ORB ...
TAO (5187|5187) - Initializing the orb-specific services
/opt/OpenDDS-3.20/DevGuideExamples/DCPS/Messenger.minimal/publisher  -ORBDebugLevel 10 -DCPSDebugLevel 10 -ORBLogFile publisher.log
/opt/OpenDDS-3.20/DevGuideExamples/DCPS/Messenger.minimal/subscriber  -ORBDebugLevel 10 -DCPSDebugLevel 10 -DCPSTransportDebugLevel 6 -ORBLogFile subscriber.log
Msg: subject    Review
     subject_id 99
     from       Comic Book Guy
     count      0
     text       Worst. Movie. Ever.
Msg: subject    Review
     subject_id 100
     from       Comic Book Guy
     count      1
     text       Worst. Movie. Ever.
Msg: subject    Review
     subject_id 101
     from       Comic Book Guy
     count      2
     text       Worst. Movie. Ever.
Msg: subject    Review
     subject_id 102
     from       Comic Book Guy
     count      3
     text       Worst. Movie. Ever.
Msg: subject    Review
     subject_id 103
     from       Comic Book Guy
     count      4
     text       Worst. Movie. Ever.
Msg: subject    Review
     subject_id 104
     from       Comic Book Guy
     count      5
     text       Worst. Movie. Ever.
Msg: subject    Review
     subject_id 105
     from       Comic Book Guy
     count      6
     text       Worst. Movie. Ever.
Msg: subject    Review
     subject_id 106
     from       Comic Book Guy
     count      7
     text       Worst. Movie. Ever.
Msg: subject    Review
     subject_id 107
     from       Comic Book Guy
     count      8
     text       Worst. Movie. Ever.
Msg: subject    Review
     subject_id 108
     from       Comic Book Guy
     count      9
     text       Worst. Movie. Ever.
Subscriber received 10 samples
INFO: /opt/OpenDDS-3.20/bin/DCPSInfoRepo being killed.
编译(最终版本)

因为编译时间太长,所以这部分我没有亲自验证了:

cd /opt/ACE_wrappers/
make
DDS编译
cd $DDS_ROOT
./configure     //DDS配置,有的帖子没有缺少这一步,后面编译会出问题
make clean      //清除上次的make命令所产生文件,第一次编译可以不运行make
make

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bynull

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

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

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

打赏作者

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

抵扣说明:

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

余额充值