TAO是ACE的ORB,所以需要先安装ACE,详细过程请参考debian9.6安装ACE过程。
1,下载TAO
依旧是在官网上,http://download.dre.vanderbilt.edu/,这个是美国范德堡大学的一个网站。因为我下载的是ACE+TAO,所以连带下载了TAO,解压之后就在ACE_wrappers下有一个TAO的文件夹。
2,配置~/.bashrc
## vi ~/.bashrc
末尾添加
export TAO_ROOT=$ACE_ROOT/TAO
## source ~/.bashrc
使得配置生效
3,预编译
按理说现在就可以make,不过我按照http://bbs.chinaunix.net/thread-1012206-1-1.html的浪了一把,我把原来的GNUmakefile文件给删除了,即
## find . –name “*GNUmakefile*” | xargs rm
然后想自己生成新的makefile,结果我采用这条命令,即
通过mwc.pl命令及一个.mwc file的输入文件,就会产生默认的makefile文件
## $ACE_ROOT/bin/mwc.pl TAO_ACE.mwc
问题1,提示我没有配置CIAO_ROOT和DANCE_ROOT
问题2,以及没有指定-type
问题1,我在http://download.dre.vanderbilt.edu/官网上下载了CIAO和DANCE的安装包,解压放到了$ACE_ROOT下,即和TAO同一根目录,然后配置~/.bashrc
## vi ~/.bashrc
在末尾添加
export CIAO_ROOT=$ACE_ROOT/CIAO
export DANCE_ROOT=$ACE_ROOT/DANCE
## source ~/.bashrc
使得配置生效
问题2,根据提示there is no longer a default project type,网上没有找到这个问题的解决方式,结果我发现了在TAO目录下有个TAO-INSTALL.html,我试着去打开,
## cd $ACE_ROOT/TAO
## firefox TAO_INSTALL.html
发现里面有一个
## $ACE_ROOT/bin/mwc.p TAO.mwc -type gnuace
试了一下,可以了。
4,正式编译
## make
这个编译时间比较久。
以下内容,现在不是很理解,只是照着做了。
5,安装,一定是root
## make install
几分钟之后就安装了。
6,启动命名服务
## $TAO_ROOT/orbsvcs/Naming_Service/tao_cosnaming -m 1
以上命令可能随版本的变化而变化,具体请看,ACE_wrappers\TAO\docs\tutorials\Quoter\index.html 下文档“TAO's Naming Service”一项。
如果没有第5步就会出现这个问题,
## $TAO_ROOT/orbsvcs/Naming_Service/tao_cosnaming -m 1
/home/guoyanzhang/ACE_wrappers/TAO/orbsvcs/Naming_Service/tao_cosnaming: error while loading shared libraries: libTAO_ImR_Client.so.2.5.3: cannot open shared object file: No such file or directory
7, 启动事件服务
## $TAO_ROOT/orbsvcs/CosEvent_Service/tao_cosevent
以上命令可能随版本的变化而变化,具体请看,ACE_wrappers\TAO\docs\tutorials\Quoter\index.html 下文档“TAO's COS Event Service”一项。
如果没有第5步,就会有这个问题,
## $TAO_ROOT/orbsvcs/CosEvent_Service/tao_cosevent
/home/guoyanzhang/ACE_wrappers/TAO/orbsvcs/Naming_Service/tao_cosnaming: error while loading shared libraries: libTAO_IORTable.so.2.5.3: cannot open shared object file: No such file or directory
结果我在开启这个服务的时候出现以下问题,
## $TAO_ROOT/orbsvcs/CosEvent_Service/tao_cosevent
(30427|140682155001664)EXCEPTION,/home/guoyanzhang/ACE_wrappers/TAO/orbsvcs/CosEvent_Service/tao_cosevent
system exception,ID 'IDL:omg.org/CORBA/TRANSIENT:1.0'
OMG minor code (2),described as 'No usable profile in IOR.',completed=NO
查了一下,我判断可能是硬件环境导致的。(目前还无此需求,这个问题做为遗留问题)
可参考http://kb.cloudblue.com/en/116374
ACE_wrappers\TAO\docs\tutorials\Quoter\index.html提到了测试方法,但是client和server怎么得到?
解决方法:
其实很简单,增加一下这个就好了,
## vi ~/.bashrc
export LD_LIBARY_PATH=$LD_LIBRARY_PATH:$ACE_ROOT/ace:$ACE_ROOT/lib:$TAO_ROOT
我在github里面求助了jwillemsen,才解决的,链接https://github.com/DOCGroup/ACE_TAO/issues/756
里面有我测试的例子,我这里就不详细写了,那里写的很清楚。
8,启动通知服务
## $TAO_ROOT/orbsvcs/Notify_Service/Notify_Service -Factory NotifyEventChannelFactory -NameSvc -Channel NotifyEventChannel -ORBRunThreads 1 -ORBEndpoint iiop://199.3.13.7:12002
以上命令可能随版本的变化而变化,具体请看,ACE_wrappers\TAO\orbsvcs\Notify_Service\README。
9,检查服务运行状况
## netstat -an | grep 1200
10,测试(这步有疑问,以后再解决)
## cd $TAO_ROOT/orbsvcs/tests
## $ACE_ROOT/bin/mwc.pl tests.mwc
## make