Linux下编译OpenDDS
OpenDDS同样支持Linux family,本文使用的Linux环境为Ubuntu 12.04LTS,make版本GNU Make 3.81,Perl版本v5.14.2。
1 OpenDDS编译前准备
下载ACE+TAO与OpenDDS。
ACE+TAO下载地址http://download.dre.vanderbilt.edu/
OpenDDS下载地址http://download.ociweb.com/OpenDDS/
注意下载时,不要选择.zip版本,.zip版本是为Windows准备的,部分文件的Windows格式会导致编译失败。
2 编译ACE+TAO与OpenDDS
a. 解压文件
cp ACE+TAO-6.2.6.tar.gz /home/workspace cp OpenDDS-3.5.tar.gz /home/workspace tar -xvzf ACE+TAO-6.2.6.tar.gz tar -xvzf OpenDDS-3.5.tar.gz
b. 设置相关环境变量
在当前用户目录下修改.bashrc文件设置全局环境变量,在/home/joeywang/.bashrc文件尾添加:
export ACE_ROOT=/home/workspace/opendds/ACE_wrappers export TAO_ROOT=$ACE_ROOT/TAO export DDS_ROOT=/home/workspace/opendds/DDS export PATH=$ACE_ROOT/bin:$DDS_ROOT/bin:$PATH export LD_LIBRARY_PATH=$ACE_ROOT/lib:$DDS_ROOT/lib:$LD_LIBRARY_PATH
c. 设置config.h
新建$ACE_ROOT/ace/config.h,文件内容为
#include “ace/config-linux.h”d. 设置Platform_macros.GNU
新建$ACE_ROOT/include/makeinclude/platform_macros.GNU,文件内容为
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNUf.编写编译脚本
编写脚本按次序编译ACE、TAO、OpenDDS,因为编译的时间比较长,输出的信息较多,可将std_out和std_err分别重定向到不同log文件以便编译完成后查看。脚本内容如下:
(cd $ACE_ROOT; make clean && make) 1> make_ace.log 2>make_ace_err.log (cd $TAO_ROOT; make clean && make) 1> make_tao.log 2>make_tao_err.log (cd $DDS_ROOT; make clean && make) 1> make_dds.log 2>make_dds_err.log echo “---END---“
NOTE: 参考lyingbo的文章,只编译make –C ace、make –C apps/gperf/src会是ACEXML库缺失,在随后的编译make –C orbsvcs的过程中,无法生成tao_imr_relocator等组件。在进行完全编译(即使用根目录下makefile编译)后,能够顺利完整组件。
g. 运行测试脚本
编译完成之后,可以运行测试脚本观察是否OpenDDS环境是否搭建成功。切换到$DDS_ROOT/examples/DCPS/Messenger_Imr目录,运行run_test.pl
运行结果显示test PASSED,测试成功。
3 编译代码版本
ACE、TAO提供了源代码版本,源代码版本不包含项目文件,如果在编译Full版本发现问题时,可以使用源代码版本重新生成项目文件后再编译。当然也可以下载Full版本,使用find和rm命令删除所有makefile后重新生成。
编译过程如下:
1. 下载ACE+TAO源代码版本,解压。
2. 设置环境变量$ACE_ROOT和$TAO_ROOT
3. 创建config.h和platform_macros.GNU
4. 使用MPC工具编译
mwc.pl ACE.mwc –type gnuace mwc.pl TAO_ACE.mwc –type gnuace
参考文章
http://blog.sina.com.cn/s/blog_6f83fdb40101i62i.html
http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#win32
http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/TAO-INSTALL.html