RPC DDS安装和生成代码

32 篇文章 3 订阅
5 篇文章 1 订阅

1.源码地址
    https://github.com/eProsima/RPC

2.准备工作:
    我的安装环境是ubuntu20.04,可能需要安装的软件。可以等到编译时报错再安装。如果已经安装了就忽略。
    cmake
    g++
    git
    libasio-dev
    libtinyxml2-dev
    libssl-dev
    libp11-dev
    libengine-pkcs11-openssl
    openjdk-8-jdk
    libpython3-dev
    libboost-all-dev
    gradle
    
备注:
    试验机已经安装了git和g++,根据报错信息,我自己安装的如下:
    $sudo apt install cmake
    $sudo apt install libboost-all-dev
    $sudo apt install libasio-dev
    $sudo apt install libtinyxml2-dev
    $sudo apt install openjdk-8-jre-headless
    $sudo apt install openjdk-8-jdk

3.编译
    按网站上的README描述的顺序编译。

    先在~下创建目录RPC

    cd ~

    mkdir RPC    //路径根据需要可以自己改
    1).boost_threadpool

$cd ~/RPC
$git clone https://github.com/eProsima/boost_threadpool.git
$cd boost_threadpool
 
//linux 系统下需要切换成cmake分支,否则找不到cmake文件
git branch -r
git checkout -b cmake origin/cmake
  
$mkdir build && cd build
$cmake -DCMAKE_INSTALL_PREFIX=~/RPC/install ..
$cmake --build . --target install

     2).foonathan_memory_vendor

$cd ~/RPC
$git clone https://github.com/eProsima/foonathan_memory_vendor.git
$cd foonathan_memory_vendor
$mkdir build && cd build
$cmake -DCMAKE_INSTALL_PREFIX=~/RPC/install ..
$cmake --build . --target install

     3).Fast CDR

$cd ~/RPC
$git clone https://github.com/eProsima/Fast-CDR.git
$cd Fast-CDR
$mkdir build && cd build
$cmake -DCMAKE_INSTALL_PREFIX=~/RPC/install ..
$cmake --build . --target install	

     4).Fast DDS

$cd ~/RPC
$git clone https://github.com/eProsima/Fast-DDS.git
$cd Fast-DDS
$mkdir build && cd build
$cmake -DNO_TLS=ON -DCMAKE_INSTALL_PREFIX=~/RPC/install ..
$cmake --build . --target install
	
$cd ~/RPC
$git clone https://github.com/eProsima/Fast-DDS-Gen.git
$cd Fast-DDS-Gen
$./gradlew assemble	//网上说执行这句可以不用安装gradle,第一次运行需要下载文件,比较慢安装时最新的版本编译错误,切换到2023.1.9的提交,可以编译通过。
	
	$git checkout 4848e9a0df59c611d871424e155576f9e441a6fe	
	$ ./gradlew assemble		//下面为输出

	> Task :submodulesUpdate
	子模组路径 'thirdparty/idl-parser':检出 'de671e1e6f48ea3db7c833812fd345e7d91a1d42'

	BUILD SUCCESSFUL in 2s
	6 actionable tasks: 3 executed, 3 up-to-date

	
若不起作用,安装gradle,运行$gradle assemble
	
$cd ~/RPC/install/bin
$cp ~/RPC/Fast-DDS-Gen/scripts/fastddsgen .
$cd ~/RPC/install/share
$cp ~/RPC/Fast-DDS-Gen/share/fastddsgen . -r

     5).RPC

$cd ~/RPC
$git clone https://github.com/eProsima/RPC.git
$cd RPC
//编译RPC是需要修改CMakeLists.txt, 下面的OFF -> ON
  option(BUILD_JAVA "Activate the compilation of the Java application" ON)
        
安装gradle(我用的是4.4.1,具体步骤可参考网络,成功后能在命令行运行gradle命令)

$mkdir build && cd build
$cmake -DRPCPROTO=rpcdds -DCMAKE_INSTALL_PREFIX=~/RPC/install ..
$cmake --build . --target install	//有时编译失败是网络原因,再试几次即可

3.环境变量
install路径需要设置到环境变量中。

在~/.bashrc中,设置
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/XXX/RPC/install/lib

export RPCDDSHOME=/home/XXX/RPC/install
export RPCDDS=/home/XXX/RPC/install/bin
export PATH=$PATH:$RPCDDS:$RPCDDSHOME

4. 生成文件:
在/home/XXX/RPC/install/bin目录,执行
$rpcddsgen -help

 按照帮助说明生成文件,输入文件是idl格式的。例如:

$../../install/bin/rpcddsgen -example x64Linux2.6gcc4.4.5 Test.idl

Test.idl内容如下:

interface HelloWorld
{
	string hello(in string name, out long index);
};


生成的文件默认与idl文件在同一个路径,可以通过-d选项指定路径。-example表示生成的文件里含有示例。生成的文件列表像下面这样:

├── makefile_x64Linux2.6gcc4.4.5
├── TestAsyncCallbackHandlers.h
├── TestClientExample.cxx			//客户端使用示例
├── Test.cxx
├── TestDDSAsyncSupport.cxx
├── TestDDSAsyncSupport.h
├── TestDDSProtocol.cxx
├── TestDDSProtocol.h
├── Test.h
├── Test.idl
├── TestProtocol.h
├── TestProxy.cxx
├── TestProxy.h
├── TestServer.cxx				
├── TestServerExample.cxx		//服务端使用示例
├── TestServer.h
├── TestServerImplExample.cxx	//函数是实现在这里修改
├── TestServerImplExample.h
├── TestServerImpl.h
├── TestTopics.cxx
├── TestTopics.h
├── TestTopicsPlugin.cxx
└── TestTopicsPlugin.h
通过make -f makefile_x64Linux2.6gcc4.4.5来执行make。

如果不想要示例,可以去掉option选项,直接输入:
$../../install/bin/rpcddsgen Test.idl

生成的文件如下:

├── TestAsyncCallbackHandlers.h
├── Test.cxx
├── TestDDSAsyncSupport.cxx
├── TestDDSAsyncSupport.h
├── TestDDSProtocol.cxx
├── TestDDSProtocol.h
├── Test.h
├── Test.idl
├── TestProtocol.h
├── TestProxy.cxx
├── TestProxy.h
├── TestServer.cxx
├── TestServer.h
├── TestServerImpl.h
├── TestTopics.cxx
├── TestTopics.h
├── TestTopicsPlugin.cxx
└── TestTopicsPlugin.h

注意:idl里面需要有interface,否则生成的文件会少很多且用处不大。

生成后执行报错:
$./rpcddsgen
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
ERROR: Getting platforms. null

删除生成文件重新编译安装

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值