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