1. 程式人生 > >debian9.6安裝TAO過程

debian9.6安裝TAO過程

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

參考:http://bbs.chinaunix.net/thread-1012206-1-1.html